목록코딩테스트 (50)
마이의 개발 블로그

코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 작성 코드 1. 한 유저당 한 사람에 대해 1회만 신고가 유효하므로 report 중복값을 제거한 후 reportList에 저장한다. 2. reportList를 읽어 신고자와 신고당한자의 이름을 각각 reportArray[i][0], reportArray[i][1]에 저장한다. 3. reportArray를 돌며 각 유저가 신고당한 횟수를 reportCount배열에 저장한다. 4. 정지 당한 유저 (2회 이상)를 체크한 후, 각 신고자가 받을 처리 결과 메일..

코딩테스트 연습 - 폰켓몬 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. programmers.co.kr 작성 코드 1. 정렬 (Arrays.sort()) 2. 한 바퀴 돌면서 중복 안 되는 폰켓몬 번호의 최대값(count)이 몇 개인지 찾는다 (for문). 3. 선택가능한 최대개수 n과 count를 비교하여 그 중 큰 값을 정답으로 반환한다. import java.util.*; class Solution { public int solution(int[] nums) { int answer = 0; Arrays.sort(nums); int count = 0; in..

코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 작성 코드 1. 배포완료된 횟수가 주어진 progresses의 길이와 같을 때까지 반복한다(while문). 2. 한 번 반복 시 배포 완료된 작업을 제외하고, progresses에 speeds를 더한다. 3. 더해진 progresses를 체크하여 완료작업을 배포하고(count++), 완료되었음을 표시해준다(-1). 4. 한 회당 배포완료작업의 개수를 저장하고(list.add(count)), 전체 배포완료개수(countSum)에 더해준다. //내가 작성한 ..

코딩테스트 연습 - 피보나치 수 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) = programmers.co.kr 작성 코드 - 처음에는 레벨 2에 이게 왜 있는지는 잘 이해가 되지 않았는데, 재귀로 풀어내니 시간초과가 떴다. //시간초과 코드 class Solution { public int solution(int n) { int answer = 0; answer = fibonacci(n) % 123..

코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 문제상황요약 - 참가자명단(participant)의 길이가 완주자명단(completion)의 길이보다 1이 길다 -> 두 배열을 비교하며 completion에 없는 한 명만 찾으면 된다 - 동명이인이 있을 수 있다 유의사항 - 두 배열을 정렬먼저 하고 시작하면 비교가 쉬워진다 - 정렬 이후 비교 시 동명이인의 존재 여부는 신경쓸 필요가 없어진다 - 한 명만 찾으면 되기 때문에 명단에서 누군가를 삭제하거나 찾았다는 표시를 할 필요도 없다 작성 ..