본문 바로가기

Algorithm/코드 풀이

(183)
프로그래머스: 스타 수열 [JAVA] 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/70130 코딩테스트 연습 - 스타 수열 programmers.co.kr 풀이 전체적인 풀이 과정은 다음과 같다. 주어진 배열 속 숫자들의 개수를 카운트 (HashMap 사용), 이를 우선순위 큐를 통해 내림차순으로 정렬 (숫자, 숫자 개수) 우선순위 큐에서 개수가 많은 숫자대로 꺼내 배열을 순서대로 탐색하면 해당 숫자가 걸린 위치에서 탐색 위치가 처음이라면 뒤에 숫자가 동일하지 않다면 수열에 포함 위치가 마지막이라면 그 앞의 숫자가 동일하지 않고 수열에 포함이 안되어 있다면 수열에 포함 위치가 중간이라면 앞 뒤 숫자들에 대해 조건 탐색 후 수열에 포함 (앞 숫자를 먼저 탐색) 위의 조건대로 수열에 쌍이..
프로그래머스: 기지국 설치 [JAVA] 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/12979 코딩테스트 연습 - 기지국 설치 N개의 아파트가 일렬로 쭉 늘어서 있습니다. 이 중에서 일부 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 기술이 발전해 5g 수요가 높아져 4g 기지국을 5g 기지국으로 바꾸려 합니다. 그런데 5 programmers.co.kr 풀이 전체적인 풀이 과정은 다음과 같다. 기존 기지국의 범위 외의 구역을 구간으로 가정해 구분 (구간 시작 ~ 첫 번째 기지국, 기지국 사이의 구간, 마지막 기지국 ~ 구간 끝 구간) 해당 구간을 하나의 기지국 범위 (2 * w + 1) 로 나누어 올림 적용하여 누적 합 계산 문제의 접근 방식을 다르게 생각해야 하는 문제이다. 문제..
프로그래머스: 공 이동 시뮬레이션 [JAVA] 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/87391 코딩테스트 연습 - 공 이동 시뮬레이션 n행 m열의 격자가 있습니다. 격자의 각 행은 0, 1, ..., n-1번의 번호, 그리고 각 열은 0, 1, ..., m-1번의 번호가 순서대로 매겨져 있습니다. 당신은 이 격자에 공을 하나 두고, 그 공에 다음과 같은 쿼리 programmers.co.kr 풀이 전체적인 풀이 과정은 다음과 같다. 주어진 queries에 대해 마지막부터 거꾸로 탐색을 진행 현재 주어진 최종 점을 구간으로 확장하여 (최소행, 최대행, 최소열, 최대열) 쿼리의 반대 방향으로 점을 이동 구간이 확장될 가능성이 쿼리인 경우 구간을 확장 (이동 방향과 이 때 구간이 격자의 끝까지..
프로그래머스: 가장 긴 팰린드롬 [JAVA] 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/12904 코딩테스트 연습 - 가장 긴 팰린드롬 앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다. 문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요. 예를들 programmers.co.kr 풀이 전체적인 풀이 과정은 다음과 같다. 각 인덱스에서 2가지 경우에 대해 팰린드롬 체크 자신이 바로 이전 알파벳과 동일한 경우로, 팰린드롬이 짝수 개인 경우 (...@@...) 자신이 2개 뒤에 알파벳과 동일한 경우로, 팰린드롬이 홀수 개인 경우 (...@#@...) 이후 최대 길이 팰린드롬 값 ..
프로그래머스: 베스트앨범 [JAVA] 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr 풀이 전체적인 풀이 과정은 다음과 같다. 장르 속 노래들의 총 재생 횟수를 담을 HashMap, 장르 이름 -> 번호로 변환할 HashMap, 장르 총 재생 횟수 내림차순 용 우선순위 큐, 장르 번호를 통해 해당 장르 속 노래들의 재생 횟수를 내림차순으로 정렬할 ArrayList 생성 주어진 genres와 plays 배열들 돌며 현재 노래가 새로운 ..
프로그래머스: 단속카메라 [JAVA] 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42884 코딩테스트 연습 - 단속카메라 [[-20,-15], [-14,-5], [-18,-13], [-5,-3]] 2 programmers.co.kr 풀이 전체적인 풀이 과정은 다음과 같다. 차량 정보(진입, 진출 지점)를 가지는 객체 생성 해당 차량 정보에 대한 우선순위 큐 생성 (차량의 진입 시점이 빠를수록, 진출 시점이 빠를 수록) routes 배열들 통해 순차적으로 차량 정보 객체 생성 후 우선순위 큐에 삽입 한 번의 반복문을 통해 탐색 진행 해당 탐색에서는 뽑힌 첫 차량의 진입, 진출을 구간의 시작, 끝으로 잡고, 이후 뽑은 차량의 진입, 진출 시점이 해당 구간에 속하는지, 속한다면 앞선 차량..
프로그래머스: 이중우선순위큐 [JAVA] 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 풀이 전체적인 풀이 과정은 다음과 같다. 최대 힙, 최소 힙 생성 주어진 operations 배열들에 대해 각 연산을 적용 I 명령인 경우 힙 2개 모두에 값을 추가 D 1 명령(최대값 삭제)인 경우 최대 힙에서는 poll() 연산을 진행, 최소 힙에서는 remove() 연산을 진행 D -1 명령(최대값 삭제)인 경우 최소 힙에서는 poll() 연산을 진행, 최대 힙에서는 remove() 연산을 진행 단, 여태까지 누적된 삽입 명령어의 개수가 삭제 명령어의 개수보다 클때에만 삭제 명령어를 진행(아니면 건너뛴다.) 힙이 비었다면 ..
프로그래머스: 파괴되지 않은 건물 [JAVA] 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/92344 코딩테스트 연습 - 파괴되지 않은 건물 [[5,5,5,5,5],[5,5,5,5,5],[5,5,5,5,5],[5,5,5,5,5]] [[1,0,0,3,4,4],[1,2,0,2,3,2],[2,1,0,3,1,2],[1,0,1,3,3,1]] 10 [[1,2,3],[4,5,6],[7,8,9]] [[1,1,1,2,2,4],[1,0,0,1,1,2],[2,2,0,2,0,100]] 6 programmers.co.kr 풀이 전체적인 풀이 과정은 다음과 같다. 전체 누적 값을 저장할 2차원 배열 imosBoard 생성 IMOS 기법을 2차원으로 확장하여 주어진 skill 배열을 imosBoard 배열에 표시 후 적..