알고리즘
-
[프로그래머스] 오픈채팅방 / 2019 KAKAO BLIND RECRUITMENT - JAVA알고리즘/프로그래머스 2021. 9. 10. 13:19
🖇️ 문제 링크코딩테스트 연습 - 오픈채팅방카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오픈 채팅방을 개설한 사람을 위해, 다양한 사람들이 들어오고, 나가는 것을 지켜볼 수 있는 관리자창을 만들기로 했다. 채팅방에 누군가 들어오면 다음 메시지가 출력된다. "[닉네임]님이 들어왔습니다." 채팅방에서 누군가 나가면 다음 메시지가 출력된다.https://programmers.co.kr/learn/courses/30/lessons/42888 📝 문제 분석맵에 형태로 저장.결과 리스트에 일단 닉네임이 아닌 아이디와 들어온건지 나간건지 저장마지막에 출력할 때, 맵에서 아이디에 맞는 닉네임으로..
-
[프로그래머스] 자동완성 / 2018 KAKAO BLIND RECRUITMENT(3차) - JAVA알고리즘/프로그래머스 2021. 9. 8. 21:46
🖇️ 문제 링크 코딩테스트 연습 - [3차] 자동완성 포털 다음에서 검색어 자동완성 기능을 넣고 싶은 라이언은 한 번 입력된 문자열을 학습해서 다음 입력 때 활용하고 싶어 졌다. 예를 들어, go 가 한 번 입력되었다면, 다음 사용자는 g 만 입력해도 go를 추천해주므로 o를 입력할 필요가 없어진다! 단, 학습에 사용된 단어들 중 앞부분이 같은 경우에는 어쩔 수 없이 다른 문자가 나올 때까지 입력을 해야 한다. https://programmers.co.kr/learn/courses/30/lessons/17685 📝 문제 분석 세 단어를 오름차순으로 정렬했을 때 gone을 기준으로 한다면, gone은 위 문자열인 go와 "go" 두 글자가 같고, 아래 문자열인 "guild"와 "g" 한 글자가 같습니다. ..
-
[프로그래머스] 압축 / 2018 KAKAO BLIND RECRUITMENT(3차) - JAVA알고리즘/프로그래머스 2021. 9. 8. 21:45
🖇️ 문제 링크 코딩테스트 연습 - [3차] 압축 신입사원 어피치는 카카오톡으로 전송되는 메시지를 압축하여 전송 효율을 높이는 업무를 맡게 되었다. 메시지를 압축하더라도 전달되는 정보가 바뀌어서는 안 되므로, 압축 전의 정보를 완벽하게 복원 가능한 무손실 압축 알고리즘을 구현하기로 했다. 어피치는 여러 압축 알고리즘 중에서 성능이 좋고 구현이 간단한 LZW(Lempel-Ziv-Welch) 압축을 구현하기로 했다. LZW 압축은 1983년 발표된 알고리즘으로, 이미지 파일 포맷인 GIF 등 다양한 응용에서 사용되었다. https://programmers.co.kr/learn/courses/30/lessons/17684 📝 문제 분석 해시맵으로 사전을 생성합니다. 'A' ~ 'Z'까지 먼저 사전을 초기화합니..
-
[프로그래머스] 파일명 정렬 / 2018 KAKAO BLIND RECRUITMENT(3차) - JAVA알고리즘/프로그래머스 2021. 9. 8. 21:45
🖇️ 문제 링크 코딩테스트 연습 - [3차] 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램의 과거 버전을 모두 담고 있어, 이름 순으로 정렬된 파일 목록은 보기가 불편했다. 파일을 이름 순으로 정렬하면 나중에 만들어진 ver-10.zip이 ver-9.zip보다 먼저 표시되기 때문이다. https://programmers.co.kr/learn/courses/30/lessons/17686 📝 문제 분석 파일명을 정규식 매칭을 통해 3그룹으로 나눕니다. HEAD, NUMBER, TAIL 부분으로 분리하고 File 클래스를 만들어 정렬에 필요한 요소들을 저장합니다. 문제의 정..
-
[프로그래머스] 방금 그곡 / 2018 KAKAO BLIND RECRUITMENT(3차) - JAVA알고리즘/프로그래머스 2021. 9. 8. 21:45
🖇️ 문제 링크 코딩테스트 연습 - [3차] 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, 라디오 등에서 나온 음악에 관해 제목 등의 정보를 제공하는 서비스이다. 네오는 자신이 기억한 멜로디를 가지고 방금그곡을 이용해 음악을 찾는다. https://programmers.co.kr/learn/courses/30/lessons/17683 📝 문제 분석 시작 시간과 종료 시간을 분으로 바꾸고, 총 플레이 시간이 몇 분인지 구합니다. 플레이 시간에 맞게, 그만큼 연주된 악보를 만들고 네오가 기억한 멜로디를 포함하고 있다면 정답 후보입니다. 조건이 일치하는 음악이 여러 개..
-
[프로그래머스] n진수 게임 / 2018 KAKAO BLIND RECRUITMENT(3차) - JAVA알고리즘/프로그래머스 2021. 9. 8. 21:45
🖇️ 문제 링크 코딩테스트 연습 - [3차] n진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0부터 시작해서 차례대로 말한다. 첫 번째 사람은 0, 두 번째 사람은 1, ... 열 번째 사람은 9를 말한다. 10 이상의 숫자부터는 한 자리씩 끊어서 말한다. https://programmers.co.kr/learn/courses/30/lessons/17687 📝 문제 분석 튜브가 말해야 하는 숫자를 모두 구하려면, m * (t - 1) + p개의 답을 만들고, 튜브의 순서에 맞는 답만 골라내줍니다. 💡 Integer.toString(num, radix) = num을 ra..
-
[프로그래머스] 셔틀버스 / 2018 KAKAO BLIND RECRUITMENT(1차) - JAVA알고리즘/프로그래머스 2021. 9. 8. 21:45
🖇️ 문제 링크 코딩테스트 연습 - [1차] 셔틀버스 카카오에서는 무료 셔틀버스를 운행하기 때문에 판교역에서 편하게 사무실로 올 수 있다. 카카오의 직원은 서로를 '크루'라고 부르는데, 아침마다 많은 크루들이 이 셔틀을 이용하여 출근한다. 이 문제에서는 편의를 위해 셔틀은 다음과 같은 규칙으로 운행한다고 가정하자. 셔틀은 09:00부터 총 n회 t분 간격으로 역에 도착하며, 하나의 셔틀에는 최대 m명의 승객이 탈 수 있다. https://programmers.co.kr/learn/courses/30/lessons/17678 📝 문제 분석 00 : 00에서 23 : 59 사이의 시각이 입력으로 들어온다. cnt[180] = 03:00에 대기열에 도착하는 사람의 수 0분부터 1440분까지 대기열을 배열에 저..
-
[프로그래머스] 추석 트래픽 / 2018 KAKAO BLIND RECRUITMENT(1차) - JAVA알고리즘/프로그래머스 2021. 9. 8. 21:45
🖇️ 문제 링크 코딩테스트 연습 - [1차] 추석 트래픽 이번 추석에도 시스템 장애가 없는 명절을 보내고 싶은 어피치는 서버를 증설해야 할지 고민이다. 장애 대비용 서버 증설 여부를 결정하기 위해 작년 추석 기간인 9월 15일 로그 데이터를 분석한 후 초당 최대 처리량을 계산해보기로 했다. 초당 최대 처리량 은 요청의 응답 완료 여부에 관계없이 임의 시간부터 1초(=1,000밀리초)간 처리하는 요청의 최대 개수를 의미한다. https://programmers.co.kr/learn/courses/30/lessons/17676 📝 문제 분석 임의의 1초 구간에 동시에 처리한 로그의 최대값을 구하는 문제입니다. 일단 로그의 시간을 비교하기 쉽게 밀리세컨으로 바꿔줍니다. 그리고 위 그림의 형태처럼 나열하기 위해..