본문 바로가기

분류 전체보기

(386)
[pro] 프로그래머스 level3 12971 스티커 모으기2 (Java) - dp [문제] https://school.programmers.co.kr/learn/courses/30/lessons/12971 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] dp[i]애는 i번째 인덱스에서의 숫자 합의 최대값을 저장한다. 고려해야 할 부분은 다음과 같다. 1. 스티커를 뗄 것인지, 떼지 않을 것인지? i번째 스티커를 떼어낸다면, i-1번 스티커를 떼어낼 수 없으므로 dp[i-2]+sticker[i]가 될 것이다. i번째 스티커를 떼어내지 않는다면, i-1번 스티커를 뗄 수 있으므로 i-1번에서의 최대값은 dp[i-1]이 될 것이다. ..
[pro] 프로그래머스 level3 1836 리틀 프렌즈 사천성 (Java) - 시뮬레이션 [문제] https://school.programmers.co.kr/learn/courses/30/lessons/1836 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 모든 tile들을 사전순으로 list에 넣어놓고 반복문을 돌며 제거 가능한 타일은 제거(제거 후 '.'으로 바꿔서 넣어줌)하도록 한다. 제거 못한 타일이 있으면 IMPOSSIBLE을, 모든 타일에 대해 제거가 가능하다면 정답 문자열을 반환한다. 이 문제에서 고려해야 할 점은 타일을 제거하는 방법이다. 경로를 한 번 이하로 꺾을 수 있다고 문제 조건에 제시되어 있기 때문에 DFS 등..
[pro] 프로그래머스 level3 1832 보행자 천국 (Java) - dp [문제] https://school.programmers.co.kr/learn/courses/30/lessons/1832 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 처음 i-1, j-1에 대해서 배열 범위 오류가 나지 않도록 dp 배열에 패딩을 넣어준다. 이에 따라 cityMap의 (0,0)이 dp 배열의 (1,1)과 매핑된다는 것을 헷갈리지 않도록 주의해야 한다. cityMap이 2인 경우, 왼쪽에서 오던 차는 오른쪽으로만, 위에서 오던 차는 아래쪽으로만 진행 가능하다. 이 조건을 판단하기 위해서는 왼쪽에서 오던 차인지, 위에서 오던 차인지..
[pro] 프로그래머스 level3 12904 가장 긴 팰린드롬 (Java) [문제] https://school.programmers.co.kr/learn/courses/30/lessons/12904 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 가장 긴 길이부터(s.length()) 처음 시작 인덱스를 달리하며 만들 수 있는 모든 부분 문자열에 대해 팰린드롬인지 확인한다. 단순 for문으로 해결 가능하다. [코드] class Solution { public int solution(String s) { int answer = 0; //가장 긴 팰린드롬의 길이를 return for(int len=s.length(); len..
[pro] 프로그래머스 level3 12907 거스름돈 (Java) - dp [문제] https://school.programmers.co.kr/learn/courses/30/lessons/12907 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 1원, 2원, 5원이 있고 5원의 거스름돈을 거슬러줘야하는 상황. 1원 - 1 (1가지) 2원 - 1+1, 2 (2가지) 3원 - 1+1+1, 1+2 (2가지) 4원 - 1+1+1+1, 1+1+2, 2+2 (3가지) 5원 - 1+1+1+1+1, 1+1+1+2, 1+2+2, 5 (4가지) 즉 거스름돈 5원을 거슬러주기 위한 경우의 수는 다음과 같다. 1) 1원을 이용 (1+1+1+..
[pro] 프로그래머스 level3 12938 최고의 집합 (Java) [문제] https://school.programmers.co.kr/learn/courses/30/lessons/12938 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 곱의 크기가 최대가 되기 위한 수들을 생각해보면 규칙을 찾을 수 있다. n=2, s=8이라면 [4, 4]가 최고의 집합이 될 것이다. n=3, s=9라면 [3, 3, 3]이 된다. 그렇다면 n=3, s=11이라면? [3, 4, 4]가 최고의 집합이 된다. s/n을 각 자리에 넣어준 후, 나머지가 있다면 +1씩 한 집합이 최고의 집합이 된다는 것을 알 수있다. 나머지를 한쪽으로 몬..
[pro] 프로그래머스 level3 12979 기지국 설치 (Java) - 그리디 [문제] https://school.programmers.co.kr/learn/courses/30/lessons/12979 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 1동부터 n동까지 돌며 그리디하게 기지국을 설치한다. 만약 이미 설치된 기지국 범위 안에 있다면 기지국을 새로 설치할 필요가 없다. 따라서 기지국의 오른쪽 끝 범위 + 1 위치로 이동한다. 만약 설치된 기지국 범위 안에 없다면 새로 기지국을 설치해야 한다. 따라서 설치개수를 증가시켜 주고 새로 설치한 기지국의 전파 범위 다음 위치로 이동시켜줘야 한다. 이때 범위는 (왼쪽으로 w ..
[pro] 프로그래머스 level3 12927 야근 지수 (Java) - 우선순위 큐 [문제] https://school.programmers.co.kr/learn/courses/30/lessons/12927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 우선순위 큐를 오름차순 반환하도록 설정한다. 가장 큰 작업량에 대해서 n번 1씩 감소시키면 야근 지수를 최소화할 수 있다. [코드] import java.util.*; class Solution { public long solution(int n, int[] works) { long answer = 0; //야근 피로도를 최소화한 값을 리턴 PriorityQueue pq = ne..