프로그래머스
-
[프로그래머스] 시소 짝꿍(Level 2) HashMap코딩테스트 2025. 4. 28. 22:28
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/1529961. 문제 요약중심으로부터 2, 3, 4m 위치에 좌석이 있는 시소에 주어진 몸무게들을 가진 인원들의 조합몸무게 조합에서 존재하는 시소쌍의 갯수 구하기.시소쌍 : 시소가 평형이 되게하는 두 값의 쌍.2. 핵심 아이디어몸무게 등장 수를 세어둔다 (ex: 100이 2명, 180이 1명, 360이 1명, 270이 1명)자기 자신끼리 조합하는 경우 (nC2)특정 거리비율이 성립하는 다른 몸무게와 조합하는 경우 (2:3, 2:4, 3:4)3. 풀이 코드public long hashMapSolution(int[] weights){ long answer = 0; Ma..
-
[프로그래머스] 뒤에 있는 큰 수 찾기(Level 2) 스택 Stack코딩테스트 2025. 4. 28. 10:07
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/1545391. 문제 요약주어진 배열 numbers에서 각 값의 뒷쪽 값 중 큰 값을 찾아 새로운 배열에 담아서 반환한다.해당 값보다 큰 값이 없을 경우 -1을 넣는다.2. 핵심 아이디어greedy 방식으로 탐색하게 되면 시간복잡도 이슈로 오답.Stack에 찾아야 할 index를 담아두고 numbers의 값과 비교하여 반복작업 규모를 줄인다.3. 풀이 코드public int[] solution(int[] numbers) { int[] answer = new int[numbers.length]; Stack stack = new Stack(); Array..
-
[프로그래머스] 숫자 변환하기 자바 (Level 2) BFS코딩테스트 2025. 4. 28. 10:05
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/1545381. 문제 요약x를 y로 변환하기까지 소요되는 최소 연산횟수 구하기불가능할 경우 -1연산은 x * 2 , x * 3, x + n 3가지 연산을 사용한다.2. 핵심 아이디어BFS방식 . y까지 가는 가장 짧은 경로Queue에 (값, 연산횟수) 저장3가지 연산을 수행해 큐에 추가y를 만나면 그때의 연산횟수 리턴 (y 조우 연산횟수 == 최소 연산횟수)방문체크(visited) 를 해서 같은 값을 중복 방문하지 않게 한다3. 풀이 코드public int solution(int x, int y, int n) { Queue queue = new LinkedList(); ..
-
[프로그래머스] 무인도 여행 자바 (Level 2) BFS코딩테스트 2025. 4. 26. 13:26
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/1545401. 문제 요약바다 ‘X’로 구분된 지도에서 숫자로 연결된 섬을 구분한다구분된 섬들의 내부숫자의 합 구하기2. 핵심 아이디어BFS방식으로 ‘X’가 아닌 연결된 값들의 합 구하기3. 풀이 코드/** * * @param maps 'X' : 바다 1~9 : 무인도. * @return 각 연결된 숫자그룹(무인도)내의 합 오름차순 */ public int[] solution(String[] maps) { int rows = maps.length, cols = maps[0].length(); boolean[][] visited = ..
-
[프로그래머스] 호텔 대실 자바 (Level 2)코딩테스트 2025. 4. 25. 09:19
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/1556511. 문제 요약주어진 예약을 모두 소화하는데 필요한 방 갯수의 최소값 구하기퇴실시간의 10분 후부터 다음 입실 가능.2. 핵심 아이디어모든 예약을 입실시간 기준 정렬최소 힙(우선순위 큐)을 사용하여 각 방의 다음 사용 가능 시간을 추적예약마다 사용 가능한 방이 있는지 확인가능: 해당 방 재사용 (방의 다음 사용 가능 시간 갱신)불가능: 새로운 방 추가3. 풀이 코드public int solution(String[][] book_time) { //1. 시작시간 기준으로 예약시간 정렬 Arrays.sort(book_time, (a, b) -> toMinute..
-
[프로그래머스] 미로탈출 (Level 2) 자바 BFS 큐코딩테스트 2025. 4. 24. 09:34
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/1599931. 문제 요약5개의 문자 S(시작) E(출구) L(레버) O(통로) X(장애물) 로 이루어진 미로S ~ L ~ E 까지 걸리는 시간한 칸을 이동하는데 1초 소요되며 도달 불가능시 -1 반환.2. 핵심 아이디어출발점 to 레버, 레버 to 출구를 BFS 큐 방식으로 탐색3. 풀이 코드public int solution(String[] maps) { int rows = maps.length, cols = maps[0].length(); int[] start = {0,0}, lever = {0,0}, exit = {0,0}; for(int i =..
-
[프로그래머스 level2] 당구 연습 자바 반사코딩테스트 2025. 4. 21. 13:40
https://school.programmers.co.kr/learn/courses/30/lessons/169198 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제/** * 1쿠션 * @param m 당구대 가로 * @param n 당구대 세로 * @param startX 시작점 x * @param startY 시작점 y * @param balls 공위치 * @return 1쿠션으로 타격시 공이 굴러간 거리의 최솟값 제곱을 담은 배열 */피드백🔍 핵심 아이디어: 이미지 반사 (Mirrored Image) 1쿠션으로 목적구를 맞춘다는 것은 벽을 한 번 튕긴 후 목적구에 도달하는 것입니다. ..
-
[프로그래머스 level2] 리코쳇로봇 자바 BFS 큐코딩테스트 2025. 4. 20. 17:19
https://school.programmers.co.kr/learn/courses/30/lessons/169199 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제* @param board 보드상황 표현. "." : 빈 공간, "R" : 출발위치 "D" : 장애물 "G" : 목적지* @return G까지 최소 이동거리. 불가능시 -1;이 게임은 한 번 이동할 때 상하좌우 한 방향으로 벽이나 장애물에 부딪힐 때 까지 계속 이동한다.주어진 board를 바탕으로 R -> G까지 필요한 최소 이동거리를 구하여라. (불가능할 경우 -1)접근보드의 출발점 ~ 목적지까지의 최소거리는 BFS방식이 효율적이라고 알고..