본문 바로가기

알고리즘

(13)
[프로그래머스] 신고 결과 받기 Lv.1 (자바) 프로그래머스 > 코딩테스트 연습 > Lv.1> 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다. 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다. 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다. k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다. 유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다. 다음은 전체 유저 목록이 ["muzi",..
[프로그래머스] 완전탐색 > 카펫 (자바) 프로그래머스 > 코딩테스트 연습 > 완전탐색 > 카펫 문제 설명 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다. 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다. 카..
[프로그래머스] 깊이/너비 우선 탐색(DFS/BFS) > 네트워크 (자바) 프로그래머스 > 코딩테스트 연습 > 깊이/너비 우선 탐색(DFS/BFS) > 네트워크 문제 설명 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오. 제한사항 컴퓨터의 개수 n은 1 이상 200 이하인 자연수입니다. 각 컴퓨터는 0부터 n-1..
[프로그래머스] 해시 > 전화번호 목록 (자바) 프로그래머스 > 코딩테스트 연습 > 해시 > 전화번호 목록 문제설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한사항 phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. 같은 ..
[프로그래머스] 깊이/너비 우선 탐색(DFS/BFS) > 타겟 넘버 (자바) 프로그래머스 > 코딩테스트 연습 > 깊이/너비 우선 탐색(DFS/BFS) > 타겟 넘버 문제 설명 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1 +1 +1 +1 +1 = 3 +1 -1 +1 +1 +1 = 3 +1 +1 -1 +1 +1 = 3 +1 +1 +1 -1 +1 = 3 +1 +1 +1 +1 -1 = 3 +4 -1 +2 -1 = 4 +4 +1 -2 +1 = 4 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return ..
[프로그래머스] 해시 > 완주하지 못한 선수 (자바) 프로그래머스 > 코딩테스트 연습 > 해시 > 완주하지 못한 선수 문제설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예제 partic..
[프로그래머스] 정렬 > H-Index (자바) 프로그래머스 > 코딩테스트 연습 > 정렬 > H-Index ▶ 문제 1. 과학자가 발표한 논문의 인용 횟수를 담은 배열 → citations 2. n = citations.length 3. h만큼 인용된 논문의 횟수도 h편 이상, 이때 h의 최댓값은? * H-Index 위키백과 보러가기 → 위키백과를 요약해보면 1. 배열 citations을 내림차순으로 정렬한다. 2. citations[i]가 위치보다 크거나 같은 마지막 위치를 찾는다 (=h) 3. 결과적으로 수식은 H-Index = max{citations[i] >= 위치} ▶ 처음 생각한 풀이 * H-Index = max{citations[i] >= 위치}, 이때 위치는 i+1 이므로 1. 배열을 내림차순으로 정렬하고 → Arrays.sort(cit..
[프로그래머스] 정렬 > K번째수 (자바) 프로그래머스 > 코딩테스트 연습 > 정렬 > K번째수 * 문제 array 배열을 commands 배열 요소 [i, j, k] 로 1. i 부터 j 까지 자르고 2. 오름차순으로 정렬하고 3. 정렬한 배열의 k번째 값들을 return 풀이 1. i 부터 j 까지 자르고 --> 배열 부분복제 메소드 활용 --> Arrays.copyOfRange(배열명, 시작인덱스, 마지막인덱스) 2. 오름차순으로 정렬하고 --> 오름차순 정렬 메소드 활용 --> Arrays.sort(배열명) 3. 정렬한 배열의 k번째 값들을 return array = [2, 3, 4, 5, 6, 7, 8] commands =[ [1, 3, 1], [2, 4, 2] ] int[] temp = Arrays.copyOfRange(array, 2..