프로그래머스 53

[프로그래머스/자바] 구명보트_42885

문제 및 코드 1. 생각 맨 처음에 오름차순 정렬 후 적은 사람들끼리 태우자! 이렇게 생각했는데 틀림... 2. 회고 한 구명보트에 2명만 탈 수 있다는 제한을 보지 못하고 문제를 끙끙거리며 풀어나갔다. 탐욕 분류니까 정렬해서 몸무게 적은 사람들부터 태우면 되겠군... 이러면서 풀었는데 테케는 통과해도 정답처리가 안 됨. 그래서 도저히 왜 그런지 몰라서 자세히보니 2명만 탈 수 있다는 제한이 있었음. 앞으로는 제한 사항을 잘 보자. 그리고 구명보트 수를 최소한으로 하기 위해 몸무게를 오름차순으로 정렬하고 제일 몸무게 적은 사람과 많은 사람을 함께 태워버리자는 탐욕법은 그래도 이해가 되었음... ---- 오름차순 정렬한 다음 몸무게 적은 사람들끼리 먼저 태우면 되지 않을까? 하면서 풀었는데 테케는 통과돼도..

코딩테스트 2023.07.13

[프로그래머스] 큰 수 만들기_42883

문제 및 코드 회고 그리디로 어떻게 접근해야 하는지 판단이 잘 서지 않았음 그러다 다른 풀이를 참고해서 그리디를 적용해서 맨 앞에서부터 제일 큰 수를 찾아나가면 되겠다는 생각을 하게 되었음. 근데 그러면 제일 큰 수를 어떤 범위에서 찾아야 하지에 대한 생각을 하게 됨. 이때 총 만들어야 하는 숫자의 길이를 참고해서 해당 숫자의 길이의 맨 앞 숫자부터 구해나간다는 생각으로, 특정 시작점부터 만들어야 되는 숫자의 남은 길이를 남겨둔 곳까지 범위 중 최댓값을 찾아나감. 그 끝이 k+i이라고 할 수 있음. 다른 풀이 보고 그래도 이해는 되었는데 시간이 엄청 오래 걸렸다... 기억 number.charAt(j) - '0' 이렇게 숫자형태의 문자에서 '0'을 빼주면 int 형의 값을 얻을 수 있다. 체크 풀이 횟수..

코딩테스트 2023.07.12

[프로그래머스] 더 맵게_42626

문제 및 코드 회고 우선순위큐를 사용하는 카테고리여서 우선순위큐를 사용하기도 했지만 문제를 잘 보면 우선순위큐를 사용하면 좋겠다는 생각이 든다 우선순위큐 만들어서 손쉽게 풀어서 오 괜찮은데? 이러고 제출했는데 4개의 테케 통과가 안 되길래 뭐지 이러고 살펴보니 제한사항을 내가 제대로 보지 않았다. 스코빌 지수를 만들 수 없는 경우를 고려 했어야 했다. 기억 우선순위 큐 생성 PriorityQueue pq = new PriorityQueue();//작은 수가 우선순위 갖는 우선순위 큐 PriorityQueue pq = new PriorityQueue(Collections.reverseOrder()); // 큰 수가 우선순위 갖는 우선순위 큐 체크 풀이 횟수 시간 정답 여부 참고 여부 1 40분 O

코딩테스트 2023.07.11

[프로그래머스] 주식가격_42584

문제 및 코드 회고 일단 가장 먼저 들었던 생각은 아래와 같다. 이중 for문 쓰면 시간초과 날 것 같아서 스택이나 큐로 풀려고 했다. 근데 이중 for문 써도 시간초과 안 나네..? 배신감을 느낌 큐로 해야하는지 스택으로 해야 하는지 갈피가 안 잡혀서 엄청 고민하다가 큐로 했는데 테케 1만 통과하고 다 틀림... 그래서 결국 다른 풀이를 봤음 스택으로 잘 풀어져있는 코드가 있었음. 나는 계속 주식 가격을 집어 넣고 빼고, 가격이 오른 거를 계속 유지하려고 하고 그랬는데 발상의 전환으로 가격 자체가 아니라 가격의 인덱스를 집어 넣고 빼고, 가격이 떨어진 거만 먼저 구한 다음 나중에 가격이 계속 유지되었던 것만 구하는 방식으로 풀이가 구현되어 있었음. 어떻게 이런 생각을 하지? 더보기 // prices를 ..

코딩테스트 2023.07.11

[프로그래머스] 다리를 지나는 트럭_42583

문제 및 코드 회고 큐를 이용해야 되는 건 알았는데 각 트럭이 다리 길이를 지나는 시간을 어떻게 측정해야 하지?에 사로잡혀서 엄청 헤맸다. 각 트럭마다 시간을 잴 필요는 없었고... 새로운 트럭을 살필 때 총 무게가 견딜 수 있는 무게를 넘는다면 기존의 트럭을 이동시키기 위해 더미 값을 큐에 넣어주는 아이디어가 새로웠다. 트럭의 상황에 맞게 케이스를 잘 나누는 것이 핵심 기억 큐 생성 Queue q = new LinkedList(); for문을 돌면서 for문의 index를 통제하고자 할 때는 for문에 while문을 사용할 수 있다 체크 풀이 횟수 시간 정답 여부 참고 여부 1 엄청 오래... O

코딩테스트 2023.07.10

[프로그래머스/자바] 프로세스_42587

문제 및 코드 생각 // 생각 // 대놓고 큐를 쓰라고 알려 줬음. 근데 우선순위 큐인가 // 구현 // 우선순위 큐를 만들어서 priorities를 우선순위 큐에 넣는다 // 우선순위 큐를 돈다 // priorities를 돈다 // 우선순위 큐의 값과 priorities의 값이 같다 // priorities를 도는 index와 location 값이 같다 // answer에 1 추가하고 답으로 return // priorities를 도는 index와 location 값이 다르다 // 큐에서 값 하나 빼고 answer에 1 추가하고 다음 priorities로 넘어간다 // 우선순위 큐의 값과 priorities의 값이 다르다 // 다음 priorities로 넘어간다 회고 문제 이해가 잘 안 돼서 시간이 좀..

코딩테스트 2023.07.10

[프로그래머스] 올바른 괄호_12909

문제 및 코드 GitHub - Lee-Min-Jung/coding_test_practice Contribute to Lee-Min-Jung/coding_test_practice development by creating an account on GitHub. github.com 회고 괄호 검사면 스택이지 하고 스택으로 풀기 시작했다. 스택으로 분류된 걸 알고 있어서 뭐 당연... 맨 처음에 푼 풀이는 String 배열을 만들어서 풀었는데 정확성은 다 맞았지만 효율성에서 틀렸다. 그래서 좀 살펴보니 String 말고 Character로 풀면 된다는 말이 있어서 그렇게 푸니 효율성도 통과했다. 주어진 string을 char배열로 만들어서 해당 배열을 도는 것. 맨 처음 풀이는 아래와 같다 // s를 돈다 /..

코딩테스트 2023.07.06

[프로그래머스/자바] 기능개발_42586

문제 및 코드 GitHub - Lee-Min-Jung/coding_test_practice Contribute to Lee-Min-Jung/coding_test_practice development by creating an account on GitHub. github.com 생각 // 생각 // 각 걸리는 일수를 구한 후 // 걸리는 일수 돌면서 배포일 구하기 // 구현 // progresses와 sppeeds를 돌면서 각 기능별 걸리는 일수를 구한다 // 100에서 progresses 값을 뺀 후 speeds 값으로 나눈 나머지가 0이면 몫이 값 // 만약 나머지가 0이 아니면 몫에 1 더한 것이 값 // 걸리는 일수를 돈다 // 지난날과 걸리는 일수를 비교했는데 걸리는 일수가 더 크다 // 새로운..

코딩테스트 2023.07.06

[프로그래머스] 같은 숫자는 싫어_12906

문제 및 코드 GitHub - Lee-Min-Jung/coding_test_practice Contribute to Lee-Min-Jung/coding_test_practice development by creating an account on GitHub. github.com 회고 스택 아니면 큐인데 바보같이 생각하다 큐로 첨에 풀었다... 그런데 스택이 맞다 기억 큐에서 삽입은 add, 삭제는 poll 큐 생성: Queue q = new LinkedList(); 체크 풀이 횟수 시간 정답 여부 참고 여부 2 20분 O X

코딩테스트 2023.06.30