본문 바로가기

코딩테스트27

[BFS] 리코쳇 로봇 https://school.programmers.co.kr/learn/courses/30/lessons/169199 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 요약 간단히 요약하자면, 처음 위치 R에서 목표 지점 G까지 최소 움직임을 구하는 문제다. 단 이동 할 때 한 칸씩 이동하는 게 아니라 장애물 D 이거나 board 보드를 벗어나기 전까지 멈추지 않고 쭈욱 이동한다고 보면 된다. 이때 G까지 가는 최소 움직임을 return 해주면 된다. 해설 우선, 최소 이동거리를 보장해야 하기 때문에, 너비 우선 탐색(BFS)을 사용하면 효율적이다. 이전.. 2024. 3. 7.
[BFS] 미로 탈출 Lv.2 https://school.programmers.co.kr/learn/courses/30/lessons/159993 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 1 x 1 크기의 칸들로 이루어진 직사각형 격자 형태의 미로에서 탈출하려고 합니다. 각 칸은 통로 또는 벽으로 구성되어 있으며, 벽으로 된 칸은 지나갈 수 없고 통로로 된 칸으로만 이동할 수 있습니다. 통로들 중 한 칸에는 미로를 빠져나가는 문이 있는데, 이 문은 레버를 당겨서만 열 수 있습니다. 레버 또한 통로들 중 한 칸에 있습니다. 따라서, 출발 지점에서 먼저 레버가 있는 칸으로.. 2024. 3. 6.
[DFS] 광물캐기 https://school.programmers.co.kr/learn/courses/30/lessons/172927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 접근 방식은 아래와 같다. 1. picks를 반복문으로 탐색하며 순서대로 DFS를 하기로 했다. 2. 깊이 탐색을 할 때 함수를 빠져나오는 올바른 조건을 걸어주기 3. 깊이 탐색을 할 때 피로도 계산 해주기 또 중요한 점이 하나 있는데 곡괭이의 배열이 [1, 3, 2] 이런식으로 다이아 곡괭이 1개, 철 곡괭이 3개, 돌 곡괭이 2개가 있다면 각각의 곡괭이가 아래 그림 처럼 다 다른 곡괭이.. 2024. 2. 29.
Stream, 되도록이면 사용하지 말자 https://school.programmers.co.kr/learn/courses/30/lessons/12941 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 위 문제를 풀면서 아래 기존코드와 같이 Arrays.sort를 이용해서 내림차순을 하기 위해 Stream을 이용해서 int타입을 Integer 타입 배열로 박싱하는 코드를 구현했다. 하지만 이 코드는 정확선 테스트에서는 문제가 없었지만, 효울성 테스트를 통과하지 못했다. 기존코드 import java.util.*; class Solution { public int solution(int []A, .. 2024. 2. 26.
[HashSet, HashMap] 롤케이크 자르기 https://school.programmers.co.kr/learn/courses/30/lessons/132265 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; class Solution { public int solution(int[] topping) { int answer = 0; HashSet set = new HashSet(); Map map = new HashMap(); for(int i=0;i 2024. 2. 26.
[HashMap] 여러 요소와 요소의 개수세기 https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; class Solution { public int solution(int k, int[] tangerine) { int answer = 0; HashMap map = new HashMap(); for(int t : tangerine){// (1) map.put(t, map.getOrDefault(t,0)+1); } List list = new ArrayList.. 2024. 2. 25.