본문 바로가기

알고리즘 풀이/프로그래머스

(36)
[프로그래머스] 압축 / 2018 KAKAO BLIND RECRUITMENT(3차) - JAVA 🔗 문제 링크 [프로그래머스] 압축 / 2018 KAKAO BLIND RECRUITMENT(3차) 코딩테스트 연습 - [3차] 압축 TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34] programmers.co.kr 📝 풀이 과정 문자열을 반복해서 사전에 넣고 찾는 작업을 해야하고, String(문자열)과 int(색인 번호)를 동시에 저장할 수 있는 Map을 사용하기로 했다. 길이가 1인 문자열을 모두 넣어주기 위해 반복문을 돌며 Map.put 해주었고, 입력 문자열을 하나씩 끊어 반복문을 돌며 탐색하였다. map.containsKey를 통해 만약 현재 key가 사전에 없을 때까지 뒤에 덧붙이는 방식..
[프로그래머스] 방금그곡 / 2018 KAKAO BLIND RECRUITMENT(3차) - JAVA 🔗 문제 링크 [프로그래머스] 방금그곡 / 2018 KAKAO BLIND RECRUITMENT(3차) 코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, programmers.co.kr 📝 풀이 과정 주어진 멜로디를 포함하는 악보를 가진 음악을 구하는 문제이다. 문제에서 중요한 점은 C와 C#은 다르기 때문에 #이 붙어있는 음을 바꿔주어야 문자열을 찾게 될 때 오류가 없어지게 된다. 주어진 문자열에서 변환음을 모두 바꾸어 반환해주는 changeStr(str) 함수를 만들어 사용하였다. 음악은 재생된 시간만큼 멜로디가 구성되는데, 만..
[프로그래머스] 캐시 / 2018 KAKAO BLIND RECRUITMENT(1차) - JAVA 🔗 문제 링크 [프로그래머스] 캐시 / 2018 KAKAO BLIND RECRUITMENT(1차) 코딩테스트 연습 - [1차] 캐시 3 [Jeju, Pangyo, Seoul, NewYork, LA, Jeju, Pangyo, Seoul, NewYork, LA] 50 3 [Jeju, Pangyo, Seoul, Jeju, Pangyo, Seoul, Jeju, Pangyo, Seoul] 21 2 [Jeju, Pangyo, Seoul, NewYork, LA, SanFrancisco, Seoul, Rome, Paris, Jeju, NewYork, Rome] 60 5 [Jeju, Pangyo, S programmers.co.kr 📝 풀이 과정 가장 최근 참조하지 않은 것을 교체하는 LRU 알고리즘을 구현해보는 문제이..
[프로그래머스] 프렌즈4블록 / 2018 KAKAO BLIND RECRUITMENT(1차) - JAVA 🔗 문제 링크 [프로그래머스] 프렌즈4블록 / 2018 KAKAO BLIND RECRUITMENT(1차) 코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 프렌즈4블록. 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙 programmers.co.kr 📝 풀이 과정 입력은 String 배열로 들어왔지만 코드의 편의성을 위해 char형의 이중 배열로 변경하였다 블록을 좌상단부터 시작해 탐색하며 좌우, 좌하, 우하의 칸이 모두 자신의 칸과 동일하면 제거하기 위한 nextBlock에 .으로 값을 변경하여 찍어주었다. 이후, 모두 제거가 된 블럭들로 생긴 빈칸을 채우기 위해 반복문을 통해 탐색..
[프로그래머스] 뉴스 클러스터링 / 2018 KAKAO BLIND RECRUITMENT(1차) - JAVA 🔗 문제 링크 [프로그래머스] 뉴스 클러스터링 / 2018 KAKAO BLIND RECRUITMENT(1차) 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr 📝 풀이 과정 집합을 만들어 교집합과 합집합을 조사해야 하는데, 같은 원소가 여러번 등장할 수 있고 자주 찾아 반환해주어야 하기 때문에 HashMap 자료구조를 사용하기로 했다. 집합에 대소문자 구분은 없으므로 String.toLowerCase()를 사용해 모든 문자열을 소문자로 변경해주었다. 첫번째 문자열을 모두 끊어 Map에 넣어..
[프로그래머스] 기능개발 - JAVA 🔗 문제 링크 [프로그래머스] 기능개발 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 📝 풀이 과정 각 기능은 정해진 순서대로만 배포가 가능하기 때문에 현재 기능이 완료됐다고하더라도 앞의 기능이 완료되지 않으면 배포가 불가능하다. 따라서 입력 순서대로 반환하는 Queue를 사용하였다. for (int i = 0; i < progresses.length; i++) queue.add((int) (Math.ceil((100.0 - progresses[i]) / speeds[i]))); 기능구현이 완료되는 ..
[프로그래머스] 다리를 지나는 트럭 - JAVA 🔗 문제 링크 [프로그래머스] 다리를 지나는 트럭 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이 programmers.co.kr 📝 풀이 과정 트럭은 정해진 순서로 진입하고 진입한 순서대로 다리에서 빠져나오기 때문에 Queue를 사용하기로 했다. if (!queue.isEmpty() && time == queue.peek()[1]) { int[] truck = queue.poll(); weight += truck[0]; } Queue에 int배열로 {진입한 트럭의 무게, 도달시간} 순으로 넣고, time을 반복할 때마다 하..
[프로그래머스] 베스트앨범 - JAVA 🔗 문제 링크 [프로그래머스] 베스트앨범 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr 📝 풀이 과정 genreTimes.put(genres[i], genreTimes.getOrDefault(genres[i], 0) + plays[i]); 먼저 장르마다 총 누적 플레이시간을 저장해야하기 때문에 Map.getOrDefault()를 통해 Map에 해당 장르가 존재한다면 기존 값을 얻어와 더해 다시 덮어쓰기 해주고 아니라면 0을 반환해 현재 값을 추가해 넣도록 하였다. List list = new ArrayLi..