https://school.programmers.co.kr/learn/courses/30/lessons/154540 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 접근 방법maps가 100 x 100의 2차원 격자이므로 일반적인 그래프 탐색을 해도 되는 입력 범위이다.격자를 탐색하며 X이거나 방문했으면 넘어간다.아니면 bfs/dfs를 진행한다.탐색을 진행하며 vis배열에 방문기록을 남긴다. 식량의 합을 구하고, 리스트 ans에 합을 추가한다리스트를 정렬하고 배열로 바꿔 반환한다.코드 (BFS)import java.util.*;class Solution { int n,m; int[] dr = ..
https://school.programmers.co.kr/learn/courses/30/lessons/17683 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 접근 방법최대 00:00 ~ 23:59 동안의 멜로디를 기억하며, 해당 멜로디가 일치하는 노래를 찾아 제목을 반환한다그런데 지문엔 " C, C#, D, D#, E, F, F#, G, G#, A, A#, B " 의 음만 입력될것이라고 했지만 E#과 B#도 고려해야한다.음을 하나하나 매번 비교하는건 복잡하고 OOB가 발생하기 쉬울거같다.C ~ B#까지의 음을 0 ~ 13으로 번호를 부여하고 int 배열로 바꾸어 비교를 진행했다[비교 과정] 먼저,..
https://school.programmers.co.kr/learn/courses/30/lessons/135807 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 접근 방법두 배열 A, B에서 다음 두 조건 중 하나를 만족하는 최대 양의 정수 a를 찾아야한다A의 모든 원소와 나누어 떨어지고, B의 모든 원소와 나누어 떨어지지 않는다B의 모든 원소와 나누어 떨어지고, A의 모든 원소와 나누어 떨어지지 않는다.즉, A의 최대공약수가 B의 모든 원소와 나누어 떨어지지 않는다 -> 답 후보B의 최대공약수가 A의 모든 원소와 나누어 떨어지지 않는다 -> 답 후보둘 다 참이면, 둘 중 최대값둘 중 하나가 참이면 ..
https://school.programmers.co.kr/learn/courses/30/lessons/64064#qna 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr접근 방법1 1인풋값이 매우 적어 백트래킹으로 풀었다.먼저, user_id가 banned_id를 파라미터로 받아서 제재되어야하는지 판단하는 함수를 만들었다해당 함수를 기반으로 String 순열을 list에 담는다.조합으로 할때, 조건에따라 이전 idx의 데이터가 건너뛰어지는 경우가 생김순열로 모든 경우의 수를 뽑고 공통을 제거하는것이 편하다고 생각순열로 얻은 String 리스트를 정렬하여 set을 통해 같은 원소를 가진 배열을 필터링한다..
https://school.programmers.co.kr/learn/courses/30/lessons/148653 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr접근법 입력이 최대 1억이므로 O(n) 미만의 알고리즘을 선택해야한다 (dp도 될듯?)storey의 각 자리수를 보며 계산했다. 층 수는 1 ~ 4, 5, 6 ~ 9 로 패턴을 파악할 수 있다.1 ~ 4는 그냥 0층으로 가면된다5는 윗 자리수를 고려해야한다6 ~ 9는 10층으로 올라가서 0으로 간다 위 패턴에서 1,3은 직관적으로 납득할 수 있지만 5는 좀 다르다.예를 들어 555의 경우550, 560 으로 가는경우 모두 5개의 마법의 돌이 필..
https://school.programmers.co.kr/learn/courses/30/lessons/12971# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr접근방법sticker[]의 길이가 최대 10만이므로 dfs 같은 브루트포스는 불가능.그래서 처음엔 단순히 짝수 인덱스 원소의 합, 홀수 인덱스 원소의 합을 비교하는건가? 했다그렇지 않음 -> 반례 : [1,100,1,1,1,1,100,1,1]dp로 n까지의 최대값을 갱신하며 답을 구하는게 맞겠다.dp[n][2] -> 0번 idx를 선택한 경우, 1번 idx를 선택한경우를 나눠 최대값을 구할것이므로 dp[n][2]dp[i][0] = max(dp[..