ProblemSolving [ProblemSolving] 백준 - 2606 바이러스(dfs&bfs) 문제 설명 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 예를 들어 7대의 컴퓨터가 <그림 1>과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, ... ProblemSolvingProblemSolving [ProblemSolving] 백준 - 11727 2*n타일링2(dp) 문제 설명 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 예제 입력1 예제 출력1 예제 입력2 예제 출력2 예제 입력3 예제 ... ProblemSolvingProblemSolving [ProblemSolving] 백준 - 7562 나이트의이동(dfs&bfs) 문제 설명 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 있을까? 입력 입력의 첫째 줄에는 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 세 줄로 이루어져 있다. 첫째 줄에는 체스판의 한 변의 길이 l(4 ≤ l ≤ 300)이 주어진다. 체스판... ProblemSolvingProblemSolving [BOJ] 12886. 돌 그룹 (JavaScript) 스터디 그룹 덕분에 오랜만에 BOJ에서 문제를 풀어보게 됐다 3의 배수일 때만 성공할 수 있다는 조건을 생각해내는 것도 어려웠고, 콜스택 한도 초과, 시간 초과 때문에 더더욱 힘들었다 회고 성공/실패조건 세 수의 합이 3의 배수일 때만 성공 가능, 아니면 무조건 실패 x < y < z 일 때, x + y + z = (x + x) + (y - x) + z이므로 세 수의 합은 항상 동일함 x =... ProblemSolvingJavaScriptbojJavaScript [ProblemSolving] 백준 - 1697 숨바꼭질(dfs&bfs) 문제 설명 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을... ProblemSolvingProblemSolving [ProblemSolving] 백준 - 14719 빗물(구현) 문제 설명 2차원 세계에 블록이 쌓여있다. 비가 오면 블록 사이에 빗물이 고인다. 비는 충분히 많이 온다. 고이는 빗물의 총량은 얼마일까? 입력 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치부터 차례대로 W개 주어진다. 따라서... ProblemSolvingProblemSolving [ProblemSolving] 백준 - 7576 토마토(dfs&bfs) 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토의 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향에 있는 토마토를 의미한다. 철수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되는지, 그 최소 일수를 알고 ... ProblemSolvingProblemSolving [ProblemSolving] 백준 - 18405 경쟁적전염(BFS) 시험관은 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 바이러스가 존재할 수 있다. 모든 바이러스는 1번부터 K번까지의 바이러스 종류 중 하나에 속한다. 시험관의 크기와 바이러스의 위치 정보가 주어졌을 때, S초가 지난 후에 (X,Y)에 존재하는 바이러스의 종류를 출력하는 프로그램을 작성하시오. 만약 S초가 지난 후에 해당 위치에 바이러스가 존재하지 않는다면, 0을 출력한다. 서로 다른 ... ProblemSolvingProblemSolving [ProblemSolving] 백준 - 1806 부분합 (투포인터) 문제 설명 10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, ... ProblemSolvingProblemSolving [ProblemSolving] 프로그래머스KIT - 완전탐색, 소수찾기, 카펫(bruteforce) 문제 설명은 생략하겠습니다. 링크를 클릭하세요. 나의 풀이 1, 2, 3번 수포자의 방식을 리스트로 생성한다. answer의 길이만큼 반복문을 돌려서 answer의 원소와 수포자의 답안이 같다면, 카운트를 증가시킨다. 코드 나의 코드 나의 풀이 check 함수는 소수를 판정 -> 제곱근까지 판별하면 소수인지 아닌지 알 수 있다. permutaions 이용해 경우의수 -> set으로 중복 제거... ProblemSolvingProblemSolving [ProblemSolving] 프로그래머스 위클리챌린지 - 7주차 입실 퇴실 (구현) [Level2] 문제 설명은 생략하겠습니다. 링크를 클릭하세요. 입출력 예 유형 구현? 나의 풀이 별로 맘에 안 드는 코드이지만 포스팅.. 퇴실할 사람들을 순서대로 꺼내서 퇴실할 사람보다 앞서 입실한 사람이 있다면! 여기에 기준을 두고 문제를 풀었다. 입실 [1,4,2,3] 퇴실 [2,1,3,4] 결과 [2,2,1,3] 이라고 했을 때, 첫번째 퇴실할 사람은 2, 입실에서 2보다 먼저 들어온 1,4는 2보다... ProblemSolvingProblemSolving [ProblemSolving] 백준 - 2504 괄호의값(스택큐) 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X가 올바른 괄호열이면 ‘(X)’이나 ‘[X]’도 모두 올바른 괄호열이 된다. 예를 들어 ‘(()[[]])’나 ‘(())[][]’ 는 올바른 괄호열이지만 ‘([)]’ 나 ‘(()()[]’ 은 모두 ... ProblemSolvingProblemSolving [ProblemSolving] 백준- 3665 최종순위 (위상정렬) 놀랍게도 올해 참가하는 팀은 작년에 참가했던 팀과 동일하다. 그 대신에 작년에 비해서 상대적인 순위가 바뀐 팀의 목록만 발표하려고 한다. (작년에는 순위를 발표했다) 예를 들어, 작년에 팀 13이 팀 6 보다 순위가 높았는데, 올해 팀 6이 팀 13보다 순위가 높다면, (6, 13)을 발표할 것이다. 창영이는 이 정보만을 가지고 올해 최종 순위를 만들어보려고 한다. 작년 순위와 상대적인 순위... ProblemSolvingProblemSolving [ProblemSolving] 프로그래머스KIT - 더 맵게, 디스크 컨트롤러, 이중우선순위큐(heap) 문제 설명은 생략하겠습니다. 링크를 클릭하세요. 나의 풀이 스코빌 지수가 가장 낮은 2개를 골라 연산해야 하므로, 힙을 이용하여 구현했다. 힙은 내부적으로 가장 작은 값이 상단에 위치하기 때문에 값을 꺼내는 과정이 편리하여 사용했다. heap 문법 import heapq heapq.heapify(리스트) : 리스트를 힙으로 변환 heapq.hoappop(리스트) : 힙의 가장 작은 값 삭제 ... ProblemSolvingProblemSolving
[ProblemSolving] 백준 - 2606 바이러스(dfs&bfs) 문제 설명 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 예를 들어 7대의 컴퓨터가 <그림 1>과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, ... ProblemSolvingProblemSolving [ProblemSolving] 백준 - 11727 2*n타일링2(dp) 문제 설명 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 예제 입력1 예제 출력1 예제 입력2 예제 출력2 예제 입력3 예제 ... ProblemSolvingProblemSolving [ProblemSolving] 백준 - 7562 나이트의이동(dfs&bfs) 문제 설명 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 있을까? 입력 입력의 첫째 줄에는 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 세 줄로 이루어져 있다. 첫째 줄에는 체스판의 한 변의 길이 l(4 ≤ l ≤ 300)이 주어진다. 체스판... ProblemSolvingProblemSolving [BOJ] 12886. 돌 그룹 (JavaScript) 스터디 그룹 덕분에 오랜만에 BOJ에서 문제를 풀어보게 됐다 3의 배수일 때만 성공할 수 있다는 조건을 생각해내는 것도 어려웠고, 콜스택 한도 초과, 시간 초과 때문에 더더욱 힘들었다 회고 성공/실패조건 세 수의 합이 3의 배수일 때만 성공 가능, 아니면 무조건 실패 x < y < z 일 때, x + y + z = (x + x) + (y - x) + z이므로 세 수의 합은 항상 동일함 x =... ProblemSolvingJavaScriptbojJavaScript [ProblemSolving] 백준 - 1697 숨바꼭질(dfs&bfs) 문제 설명 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을... ProblemSolvingProblemSolving [ProblemSolving] 백준 - 14719 빗물(구현) 문제 설명 2차원 세계에 블록이 쌓여있다. 비가 오면 블록 사이에 빗물이 고인다. 비는 충분히 많이 온다. 고이는 빗물의 총량은 얼마일까? 입력 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치부터 차례대로 W개 주어진다. 따라서... ProblemSolvingProblemSolving [ProblemSolving] 백준 - 7576 토마토(dfs&bfs) 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토의 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향에 있는 토마토를 의미한다. 철수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되는지, 그 최소 일수를 알고 ... ProblemSolvingProblemSolving [ProblemSolving] 백준 - 18405 경쟁적전염(BFS) 시험관은 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 바이러스가 존재할 수 있다. 모든 바이러스는 1번부터 K번까지의 바이러스 종류 중 하나에 속한다. 시험관의 크기와 바이러스의 위치 정보가 주어졌을 때, S초가 지난 후에 (X,Y)에 존재하는 바이러스의 종류를 출력하는 프로그램을 작성하시오. 만약 S초가 지난 후에 해당 위치에 바이러스가 존재하지 않는다면, 0을 출력한다. 서로 다른 ... ProblemSolvingProblemSolving [ProblemSolving] 백준 - 1806 부분합 (투포인터) 문제 설명 10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, ... ProblemSolvingProblemSolving [ProblemSolving] 프로그래머스KIT - 완전탐색, 소수찾기, 카펫(bruteforce) 문제 설명은 생략하겠습니다. 링크를 클릭하세요. 나의 풀이 1, 2, 3번 수포자의 방식을 리스트로 생성한다. answer의 길이만큼 반복문을 돌려서 answer의 원소와 수포자의 답안이 같다면, 카운트를 증가시킨다. 코드 나의 코드 나의 풀이 check 함수는 소수를 판정 -> 제곱근까지 판별하면 소수인지 아닌지 알 수 있다. permutaions 이용해 경우의수 -> set으로 중복 제거... ProblemSolvingProblemSolving [ProblemSolving] 프로그래머스 위클리챌린지 - 7주차 입실 퇴실 (구현) [Level2] 문제 설명은 생략하겠습니다. 링크를 클릭하세요. 입출력 예 유형 구현? 나의 풀이 별로 맘에 안 드는 코드이지만 포스팅.. 퇴실할 사람들을 순서대로 꺼내서 퇴실할 사람보다 앞서 입실한 사람이 있다면! 여기에 기준을 두고 문제를 풀었다. 입실 [1,4,2,3] 퇴실 [2,1,3,4] 결과 [2,2,1,3] 이라고 했을 때, 첫번째 퇴실할 사람은 2, 입실에서 2보다 먼저 들어온 1,4는 2보다... ProblemSolvingProblemSolving [ProblemSolving] 백준 - 2504 괄호의값(스택큐) 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X가 올바른 괄호열이면 ‘(X)’이나 ‘[X]’도 모두 올바른 괄호열이 된다. 예를 들어 ‘(()[[]])’나 ‘(())[][]’ 는 올바른 괄호열이지만 ‘([)]’ 나 ‘(()()[]’ 은 모두 ... ProblemSolvingProblemSolving [ProblemSolving] 백준- 3665 최종순위 (위상정렬) 놀랍게도 올해 참가하는 팀은 작년에 참가했던 팀과 동일하다. 그 대신에 작년에 비해서 상대적인 순위가 바뀐 팀의 목록만 발표하려고 한다. (작년에는 순위를 발표했다) 예를 들어, 작년에 팀 13이 팀 6 보다 순위가 높았는데, 올해 팀 6이 팀 13보다 순위가 높다면, (6, 13)을 발표할 것이다. 창영이는 이 정보만을 가지고 올해 최종 순위를 만들어보려고 한다. 작년 순위와 상대적인 순위... ProblemSolvingProblemSolving [ProblemSolving] 프로그래머스KIT - 더 맵게, 디스크 컨트롤러, 이중우선순위큐(heap) 문제 설명은 생략하겠습니다. 링크를 클릭하세요. 나의 풀이 스코빌 지수가 가장 낮은 2개를 골라 연산해야 하므로, 힙을 이용하여 구현했다. 힙은 내부적으로 가장 작은 값이 상단에 위치하기 때문에 값을 꺼내는 과정이 편리하여 사용했다. heap 문법 import heapq heapq.heapify(리스트) : 리스트를 힙으로 변환 heapq.hoappop(리스트) : 힙의 가장 작은 값 삭제 ... ProblemSolvingProblemSolving