본문 바로가기

알고리즘41

백준 1697번 숨바꼭질(JAVA) - BFS 백준 1697번 https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 문제설명 x+1, x-1 , x*2로 움직이는 좌표를 계산해서 BFS 접근 BFS로 접근 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; .. 2023. 3. 24.
백준 1926번 그림(JAVA) - BFS 백준 1926번 https://www.acmicpc.net/problem/1926 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net 문제설명 도화지의 크기 n,m을 입력받고 연결된 그림중 가장큰수, 그림의 개수를 구하는 문제 ( 1로 연결된것은 한개의 그림, 가로 세로만 연결된 것으로 가정) 접근 BFS로 접근 코드 package boj; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import .. 2023. 3. 22.
(LEVEL 2)프로그래머스 - 튜플 (JAVA) [2019 카카오 개발자 겨울 인턴십] 문제 입출력 예 풀이. 1. 튜플이 만약 (2,1,3,4) 라면 전달받는 s에는 "2"가 4번, "1"이 3번, "3"이 2번, "4"가 1번 등장한다. ex) 세번째의 tc를 보면 "111"이 두번, " 20"이 1번 등장하므로 순서는 많이 등장한 (111,20) 순으로 튜플을 생성해야한다. 2. 위의 규칙을 생각하고 문자열 s를 "," 와 "{" 와 "}" 를 기준으로 split한다. (해당 과정에서 "" 빈문자열로도 나눠지므로 유의) 3. split한 문자열을 HashMap에 1씩 증가시키며 저장한다. 4. 마지막으로 포함횟수가 많을수록 튜플의 순서에는 앞쪽으로 가야하므로 map의 size에서 포함횟수를 빼서 answer에 저장한다. 코드 import java.util.*; class Solutio.. 2023. 3. 13.
(LEVEL 2)프로그래머스 - 귤 고르기 (JAVA) 문제 입출력 예 풀이. 1. tangerine의 길이만큼 돌며 숫자(크기 종류)에 해당하는 배열의 값을 플러스 2. 개수가 큰 값부터 차례대로 돌면서 k(귤의 개수)와 비교하며 만약 k보다 숫자가 같거나 크다면 break ( 해당 크기로 k가 채워진다면 까지의 종류면 된다.) 만약 k보다 숫자가 작으면 그 개수만큼 k를 빼주고 answer(종류의 개수)를 더하기 해준다 코드 import java.util.*; class Solution { public int solution(int k, int[] tangerine) { int [] num = new int[10000001]; int answer = 1; for(int n : tangerine){ num[n]++; } Arrays.sort(num); fo.. 2023. 3. 12.