본문 바로가기

Coding71

[Coding Test]다음 큰 숫자(java,프로그래머스) 문제 설명 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다.조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다.조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다.조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다.예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다.자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요.제한 사항n은 1,000,000 이하의 자연수 입니다. Javaclass Solution { public int solution(int n) { int countOnes = Integer.bitCo.. 2024. 9. 21.
[Coding Test Grammar]완전탐색 (Java) 완전탐색(Brute-Force Search) 개념과 Java 예시완전탐색(Brute-Force Search)은 가능한 모든 경우의 수를 하나하나 다 탐색하여 문제의 해를 찾는 방법입니다. 이 방식은 매우 단순하지만, 문제의 정답을 확실히 찾을 수 있다는 장점이 있습니다. 그러나 모든 경우의 수를 탐색하기 때문에, 경우에 따라 시간 복잡도가 매우 높아질 수 있습니다.완전탐색의 기본 개념완전탐색은 아래와 같은 문제에 사용됩니다:모든 경우의 수를 다 조사해야 할 때: 예를 들어, 여러 선택지가 있을 때 그 중에서 가장 좋은 답을 찾기 위해 모든 경우를 다 시도하는 방법입니다.문제의 입력 크기가 작을 때: 완전탐색은 경우의 수가 많아질수록 시간이 오래 걸리기 때문에, 작은 문제에서 주로 사용합니다.완전탐색의 기.. 2024. 9. 11.
[Coding Test]모의고사(java,프로그래머스) 문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다.1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세.. 2024. 9. 11.
[Coding Test Bookmark]카펫(java,프로그래머스) 문제 설명 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.제한 사항갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다.노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다.카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다. .. 2024. 9. 11.
[Coding Test Bookmark]다리를 지나는 트럭(java,프로그래머스) 문제 설명 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다. 단, 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다.예를 들어, 트럭 2대가 올라갈 수 있고 무게를 10kg까지 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다.따라서, 모든 트럭이 다리를 지나려면 최소 8초가 걸립니다.solution 함수의 매개변수로 다리에 올라갈 수 있는 트럭 수 bridge_length, 다리가 견딜 수 있는 무.. 2024. 9. 9.
[Coding Test Bookmark]오픈채팅방(java,프로그래머스) 문제 설명 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다.신입사원인 김크루는 카카오톡 오픈 채팅방을 개설한 사람을 위해, 다양한 사람들이 들어오고, 나가는 것을 지켜볼 수 있는 관리자창을 만들기로 했다. 채팅방에 누군가 들어오면 다음 메시지가 출력된다."[닉네임]님이 들어왔습니다."채팅방에서 누군가 나가면 다음 메시지가 출력된다."[닉네임]님이 나갔습니다."채팅방에서 닉네임을 변경하는 방법은 다음과 같이 두 가지이다.채팅방을 나간 후, 새로운 닉네임으로 다시 들어간다.채팅방에서 닉네임을 변경한다.닉네임을 변경할 때는 기존에 채팅방에 출력되어 있던 메시지의 닉네임도 전부 변경된다.예를 들어, 채팅방에 "Muzi"와.. 2024. 9. 9.
[Coding Test Bookmark]더 맵게(java, 프로그래머스) 문제 설명매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다.섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다.Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성해주세요.제한 조건scoville의 길이.. 2024. 9. 7.
[Coding Test] 영어 끝말잇기(Java, 프로그래머스) 문제 설명 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N번의 참가자끼리 게임을 진행합니다. 각 게임에서 이긴 사람은 다음 라운드에 진출할 수 있습니다. 이때, 다음 라운드에 진출할 참가자의 번호는 다시 1번부터 N/2번을 차례대로 배정받습니다. 만약 1번↔2번 끼리 겨루는 게임에서 2번이 승리했다면 다음 라운드에서 1번을 부여받고, 3번↔4번에서 겨루는 게임에서 3번이 승리했다면 다음 라운드에서 2번을 부여받게 됩니다. 게임은 최종 한 명이 남을 때까지 진행됩니다.이때, 처음 라운드에서 A번을 가진 참가자는 경쟁자로 생각하는 B번 참가자와 몇 번.. 2024. 9. 5.
[Coding Test Bookmark] 영어 끝말잇기(Java, 프로그래머스) 문제 설명 1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다.1번부터 번호 순서대로 한 사람씩 차례대로 단어를 말합니다.마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다.앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다.이전에 등장했던 단어는 사용할 수 없습니다.한 글자인 단어는 인정되지 않습니다.다음은 3명이 끝말잇기를 하는 상황을 나타냅니다.tank → kick → know → wheel → land → dream → mother → robot → tank위 끝말잇기는 다음과 같이 진행됩니다.1번 사람이 자신의 첫 번째 차례에 tank를 말합니다.2번 사람이 자신의 첫 번째 차례에 kick을 말합니다.. 2024. 9. 5.
[Coding Test Bookmark] 큰 수 만들기(탐욕법)[Java, 프로그래머스] 문제 설명어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다. 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요. 제한 조건number는 2자리 이상, 1,000,000자리 이하인 숫자입니다. k는 1 이상 number의 자릿수 미만인 자연수입니다.입출력 예number            k   return "1924.. 2024. 9. 4.
[Coding Test Grammar] 탐욕법 (Java) "탐욕법"(Greedy Algorithm)은 현재 시점에서 가장 최선의 선택을 반복적으로 수행하여 최종적인 최적해를 구하는 알고리즘 설계 기법입니다. 탐욕법의 특징단계적 선택 : 매 단계에서 가장 최선의 선택을 함.직관적 : 탐욕법은 문제를 해결하는 방법이 비교적 단순하고 직관적입니다.탐욕법이 적용되기 위해서는 "탐욕적 선택 속성"과 "최적 부분 구조"를 만족해야 합니다.Tip.Arrys.sort(Object);정렬하는 것을 추천 예제 문제: 동전 거스름돈 문제문제 설명:N원이 있을 때, 500원, 100원, 50원, 10원의 동전을 사용하여 N원을 최소한의 동전 개수로 거슬러주는 프로그램을 작성하라.탐욕법 접근:가장 큰 동전부터 가능한 한 많이 사용예를 들어, N = 1260원이 있다면, 500원짜리 .. 2024. 9. 4.
[Coding Test Grammar] 탐욕법(Greedy)[Java, 프로그래머스] 문제 설명 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다.예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다.구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다.사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 return 하도록 solution 함수를 작성해주세요.제한.. 2024. 9. 4.