https://school.programmers.co.kr/learn/courses/30/lessons/72411 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr접근 방법주문 배열의 길이는 2 ~ 20이고 각 주문의 길이는 2 ~ 10이다.코스 배열의 길이는 1 ~ 10이고 각 코스는 2 ~ 10이다.문제는 각 코스 길이에 맞는 요리조합을 구해야하는데 요리조합은 다음과 같은 요구사항이있다.주어진 코스 길이와 같은 조합을 찾아야한다가장 많이 나온 조합을 찾아야한다동률이면 모두 추가한다그래서 먼저 코스 길이에 맞는 조합을 맵으로 랭크한다.같은 횟수로 출현한 코스조합은 다 추가한다.코드import java.u..
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[..
https://school.programmers.co.kr/questions/80612 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr접근 방법enqueue와 dequeue를 통해 원소를 옮겨가며 queue1과 queue2의 합이 서로 같도록해야한다 -> queue1의 원소를 관리하고 나머지는 queue2로 볼 수 있다.두 큐를 하나의 배열로 잇고 각 sum1과 sum2가 같도록한다 즉, 합이 큰 큐에서 작은 큐로 원소를 옮긴다.큐가 빈다면 답을 구할 수 없는경우이다. 코드class Solution { public int solution(int[] queue1, int[] queue2) { ..
https://school.programmers.co.kr/learn/courses/30/lessons/12979 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr접근 방법기지국이 필요한 구간의 길이 = d 라고할때, 이 구간에 필요한 기지국의 개수는d % w == 0 이면 d / w 개가 필요하다아니면 d / w + 1개가 필요하다그렇다면 슬라이딩 윈도우로 필요한 구간을 찾고 "ans += fnc(구간)" 형태로 값을 더해주면 되겠다 ! => 시간 초과 발생사실 구간은 solution 함수의 파라미터 만으로 알 수 있다0 ~ stations[0]-w-1 , stations[0]+w+1 ~ station..