2024/12/15 3

[lv2] 리코쳇 로봇

https://school.programmers.co.kr/learn/courses/30/lessons/169199 기본 bfs 문제에 델타를 1칸 이동 -> 갈 수 있는 데까지 이동으로 바꾼 형식이었다. import java.util.*;class Solution { public int solution(String[] board) { int answer = 0; int R = board.length; int C = board[0].length(); int gr=0, gc=0, rr=0, rc=0; int[] dr = {0,0,1,-1}; int[] dc = {1,-1,0,0}; char[][] map = new..

[lv2] 방금그곡

https://school.programmers.co.kr/learn/courses/30/lessons/17683 파싱 + 구현 문제다. 1. 음 전처리하기 (편의상 사용)- 네오가 기억한 멜로디와 악보에 사용되는 음은 C, C#, D, D#, E, F, F#, G, G#, A, A#, B 12개이다. #이 붙은 음들은 문자열 길이 판단 및 비교에 번거로우므로, 전처리한다.여러 방법이 있겠지만, 나는 소문자로 변환하였다. 2. 재생한 곡 정보 파싱하기(종료 시각 - 시작 시각)으로 총 시간을 구한다.(문제 조건에서, 음악이 00:00을 넘어가는 경우는 없으므로 식을 단순하게 놓아도 된다.) 이후 전처리한 악보를 기반으로, idx를 mod 연산하며 풀 악보를 만든다. 3. 정답 해 추가하기문제에서 해가 여..

[lv2] 줄 서는 방법

https://school.programmers.co.kr/learn/courses/30/lessons/12936 수학 문제다. 개인적으로 풀이 이후 설명하기 참 난해한 문제라고 느꼈다.  문제에서 가능한 k의 범위는 1  다만, k 값이 long으로 주어지므로 20!이 long 범위를 넘는지는 판단하지 않아도 된다.  1. 첫번째 원소 판단 (n = 3, k = 5 일 때) n=3 일 때 가능한 수열을 나열하면,[1, 2, 3] [1, 3, 2] [2, 1, 3] [2, 3, 1] [3, 1, 2] [3, 2, 1] 찾고자 하는 5번 째 수열 (k = 5)의  첫번 째 수는 3이어야 한다. 이는,n = 3 일 때 전체 경우의 수 (3 * 2 * 1) 에서, (k / 2 * 1) + ( k % 2 * 1..