Problem Solving/Programmers
[프로그래머스, 12971] 스티커 모으기(2) (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12971 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 60.5 MB, 시간: 18.85 ms사용 알고리즘: 다이나믹 프로그래밍 현재 스티커를 뜯는 경우 중 최대값(dp[i][1])과 뜯지 않는 경우 중 최대값(dp[i][0])을 담은 dp 배열을 만든다.0번 스티커부터 차례대로 스티커를 뜯는 경우를 구해주는데, 현재 스티커를 뜯을 거라면 앞 스티커는 뜯지 않은 상태여야 한다.dp[i][1] = dp[i - 1][0] + sticker[i] 현재 ..
[프로그래머스, 12914] 멀리 뛰기 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12914 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 80 MB, 시간: 0.21 ms사용 알고리즘: 다이나믹 프로그래밍 i칸으로 이동하는 방법은i - 1칸에서 1칸 뛰는 방법과i - 2칸에서 2칸 뛰는 방법이 있다.dp[i] = dp[i - 1] + dp[i - 2]class Solution { static final int MOD = 1_234_567; public long solution(int n) { ..
[프로그래머스, 12928] 약수의 합 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12928 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 72.4 MB, 시간: 0.09 ms사용 알고리즘: 구현 class Solution { public int solution(int n) { int answer = 0; for(int i = 1; i
[프로그래머스, 250134] [PCCP 기출문제] 4번 / 수레 움직이기 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/250134 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 88.9 MB, 시간: 7.35 ms사용 알고리즘: DFS, 백트래킹, 완전탐색 maze의 크기가 최대 4 x 4 밖에 되지 않기 때문에 모든 경우를 다 구해주었다.조건에 맞게 dfs로 수레들을 가능한 모든 경우로 다 이동해 본 후 최솟값을 구해준다. 중복된 코드가 많고 조건문 깊이가 깊고 코드도 길어졌다.좀 더 보기 편하게 구현할 수도 있을 것 같은데, pccp 준비하며 시간제한 걸고 푸느..
[프로그래머스, 250135] [PCCP 기출문제] 3번 / 아날로그 시계 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/250135 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 77.6 MB, 시간: 3.73 ms사용 알고리즘: 구현 시침과 초침이 만나는 경우는 12시 정각 밖에 없다.분침과 초침이 만나는 경우는 만약 현재 5분이라면 초침이 5초에서 6초를 넘어갈 때 만난다.(단, 59분이라면 59초에서 00초로 넘어가는 와중에 만나는 것이 아니라 00초가 딱 됐을 때 만난다.)class Solution { public int solution(int h1, i..
[프로그래머스, 250136] [PCCP 기출문제] 2번 / 석유 시추 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/250136 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 73.2 MB, 시간: 84.38 ms사용 알고리즘: BFS 아직 발견하지 않은 석유 덩어리를 발견했다면,bfs로 덩어리의 크기를 확인하며 몇 번 열들에 걸쳐져 있는지 체크한다.덩어리의 크기를 다 구했다면, 시추관을 설치했을 때 뽑을 수 있는 석유량을 저장한 배열의 걸쳐져 있는 열들에 덩어리의 크기를 더해준다.import java.util.*;class Solution { st..
[프로그래머스, 250137] [PCCP 기출문제] 1번 / 붕대 감기 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/250137 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 89.9 MB, 시간: 0.04 ms사용 알고리즘: 구현 class Solution { public int solution(int[] bandage, int health, int[][] attacks) { // 현재 체력 int answer = health; // 공격 시작 answer -= attacks[0..
[프로그래머스, 60060] 가사 검색 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/60060# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 79.8 MB, 시간: 42.17 ms사용 알고리즘: 이분탐색 단어들을 문자 하나하나 트리 형태로 저장한다.앞에서부터 뒤로 연결한 트리와 뒤에서부터 앞으로 연결한 트리를 만든다.만약 접두사에 와일드카드가 있다면 뒤에서부터 만든 트리로 단어를 찾고.접미사에 와일드카드가 있다면 앞에서부터 만든 트리로 단어를 찾는다.import java.util.*;class Solution { st..
[프로그래머스, 42579] 베스트앨범 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 73.4 MB, 시간: 0.82 ms사용 알고리즘: 자료구조 import java.util.*;class Solution { public int[] solution(String[] genres, int[] plays) { // 장르 별 수록 총합 ArrayList playsPerGenres = new ArrayList(); ..
[프로그래머스, 42885] 구명보트 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/42885 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 54.1 MB, 시간: 11.27 ms사용 알고리즘: 투 포인터 일단 사람들의 몸무게를 오름차순으로 정렬한다.그리고 투 포인터를 사용할 건데,하나의 포인터는 현재 가장 가벼운 사람, 다른 하나의 포인터는 현재 가장 무거운 사람을 가리킨다.현재 가장 무거운 사람을 구명보트에 태우고 가장 가벼운 사람이 이 구명보트에 탈 수 있는지 확인한다.탈 수 있다면 함께 태워 보내고 탈 수 없다면 가장 무거운..