본문 바로가기

코테58

[java] [PCCP 기출문제] 1번 / 동영상 재생기 풀이1. 모든 시간 값들을 숫자로 변환한다- 분 단위는 * 60, 초 단위는 그대로 정수값으로 변환해 더한다2. next, prev, skip 함수를 만들어준다- int 형은 void를 사용해서 값을 바꿀 수 없으므로 int 형으로 반환하는 함수를 만들어 현재 시간을 수정한다- next는 10초 후에 영상 밖으로 넘어가면 비디오 시간을, 아니면 +10 을 반환- prev는 10초 전에 영상 밖으로 넘어가면 0을, 아니면 -10을 반환3. 오프닝 시간 안에 있을 경우에는 무조건 skip하므로, 초기에 skip을 적용해준다- skip을 한 번 적용한 다음 명령어를 순회해야 한다4. 명령어를 순회한다- next, prev에 따라 현재 시간을 조정하고- 다음 명령어로 넘어가기 전 skip을 한 번 확인한다5. .. 2024. 9. 25.
[java] [PCCP 기출문제] 2번 / 퍼즐 게임 챌린지 풀이1. level의 최댓값과 최솟값을 설정한다- max_level = Array.stream(diffs).max().getAsInt();- min_level = 1;   2. 퍼즐을 풀이하며 누적된 시간을 cum_time에 저장한다. 초기값은 0 3.이진탐색을 사용해 범위를 반씩 좁혀가며 해결한다- binarySearch(난이도, 소요시간, 레벨)- cum_time > limit 이면 min_level을 중위값으로 높인다- cum_time 회고result의 범위가 너무 넓은 경우에는 이진탐색을 해야 엄청난 양의 계산을 피할 수 있다코드 (접은 글)더보기import java.util.*;class Solution { public int solution(int[] diffs, int[] times, .. 2024. 9. 16.
[java] 프로그래머스스쿨 혼자서 하는 틱택토 풀이1. O의 개수를 O_num, X의 개수를 X_num으로 선언한다. 초기값은 02. 이중 배열 map에 틱택토를 그린다- 그려가며 각 문자의 수를 기록한다3. 존재할 수 없는 경우의 수를 기록한다 - O가 X보다 적은 경우 (O가 선공이므로, O가 더 적은 경우는 존재할 수 없다)- O가 X보다 2개 이상 많은 경우 (번갈아가면서 해야하므로 최대 1만 차이날 수 있다)- O와 X가 동일하면서, O가 세 개 연속 존재하는 경우 (O가 이미 이겼음에도 이미 경기를 이어갔다는 것을 의미)- O와 X보다 한 개 더 많으면서, X가 세 개 연속 존재하는 경우 (X가 이미 이겼음에도 이미 경기를 이어갔다는 것을 의미)4. 위의 경우 중 하나에 걸리면 return 0, 아니면 return 1회고이런 문제는 머리를.. 2024. 9. 16.
[java] 짝지어 제거하기 풀이 1. 스택을 생성한다 - 단어를 하나씩 넣어주기 위해 2. 인덱스를 생성한다 - 단어를 하나씩 훑어보기 위해서 3. while문을 사용해서 단어를 하나씩 훑어본다 - 만약 스택이 비어있으면 단어를 push한 후 index++, continue - 위의 과정을 거치지 않으면 peek값을 뽑으려 하기 때문에 컴파일 에러 - 스택의 가장 위의 값(직전 단어)과 현재 단어가 일치하면 pop후 index++ - 둘 다 해당되지 않는다면 push후 index++ 4. while문을 빠져나왔을 때, 스택이 비어있으면 단어가 모두 삭제된 것으로 return 1, 아니면 return 0 회고 . 코드 (접은 글) 더보기 import java.util.*; class Solution { public int solut.. 2024. 1. 11.
[java] 귤 고르기 풀이 1. 받은 귤의 크기는 key값으로, 그 크기의 개수를 value값으로 하여 map에 저장한다 - for문으로 배열을 돌면서 map에 넣음 2. answer=0, sum=0을 선언한다 - answer : 크기 종류의 수 - sum : 크기 종류를 추가할 때마다 늘어나는 귤의 총 개수 3. list에 map의 value값들을 넣고, 역순으로 정렬한다 - 개수가 많은 것부터 고려해야 종류의 수가 줄어들 수 있기 때문이다 4. for문으로 sum에 value값들을 큰 것부터 더해가며 k와 비교한다. 동시에 answer도 1씩 증가시킨다 - sum이 k보다 커지면 answer 반환 회고 - getOrDefault 잊지말자,, 코드(접은 글) 더보기 import java.util.*; class Soluti.. 2024. 1. 11.
[java] 프로그래머스 스쿨 모의고사 풀이 1. 학생 세 명의 정답 패턴을 각각 배열에 저장한다 2. list를 두 개 선언한다 - list는 모든 값을 저장하는 용도 - list2는 가장 큰 값을 가지는 사람의 번호를 저장하는 용도로 쓰인다 3. 함수 check에서 no[i%no.length]의 값과 정답의 값이 같다면 score를 증가시킨다 4. 학생 순서대로 check를 호출해서 list에 저장한다 5. list의 가장 큰 값을 max에 저장한 후, 반복문으로 정답의 수와 max값이 같다면 list2에 i+1을 추가한다 6. list2를 배열로 바꿔 반환한다 회고 - list의 가장 큰 값 = Collections.max - list를 배열로 : int[] array = list.stream().mapToInt(Integer::intV.. 2023. 12. 27.