코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr package programmers.level1; import org.junit.Test; import java.lang.reflect.Array; import java.util.Arrays; import java.util.HashMap; public class P77484 { @Test public void 정답(){ int[] lottos = {44, 1, 0, 0, 31, 25}; int[] win_nums =..
코딩테스트 연습 - k진수에서 소수 개수 구하기 문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소 programmers.co.kr 풀이 1. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소수 오른쪽에만 0이 있고 왼쪽에는 아무것도 없는 경우 0P처럼 소수 왼쪽에만 0이 있고 오른쪽에는 아무것도 없는 경우 P처럼 소수 양쪽에 아무것도 없는 경우 단, P는 각 자릿수에 0을 포함하지 않는 소수입니다. -> 이말은 0으로 구분되는 소수를 구하라는 말이다 220033300 이 있다면 0으로 s.split("0") 2. 소수구하기 3. k 진수..
코딩테스트 연습 - 다음 큰 숫자 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니 programmers.co.kr //다른사람코드 public int solution2(int n) { int answer = Integer.bitCount(n); while(true) { n++; if(answer == Integer.bitCount(n) ) { answer = n; break; } } return answer; } public int solution(int n) { int answer = 0; String binary = Integer.toBi..

코딩테스트 연습 - 예상 대진표 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N programmers.co.kr 풀이 1. 항상 이기닌깐 a와 b로만 순위를 구해주면댐 2. 그림처럼 4와 7이 맞붙기 위한 순위 이동 공식을 만들어줘야함 3. 첫숫자 a 두번째 숫자 b 라고 가정했을때 a = a/2 + a%2 ex) 4는 4 -> 2 -> 1 순위를 가짐 b = b/2 + b%2 ex) 7은 7 -> 4 -> 2 -> 1 package programmers.level2; import org.junit.Test; public class P12985 {..
코딩테스트 연습 - 피로도 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던 programmers.co.kr 풀이 1. 순열 고려 2. 순열 만들 때 dogeons 배열의 인덱스로 뽑아서 비교해야 함 3. 던전 배열 개수만큼 조합이 되었을 때 for문을 돌려 result를 구한다. package programmers.level2; import org.junit.Test; public class P87946 { @Test public void 정답(){ int[][]dungeons = {{80,20},{50,40},{30,10}}; System.out.printl..
코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 풀이 1. 1231234라는 문자열에서 숫자 3개를 제거한다고 가정했을 때 반환해야 하는 문자열 길이는 str.length() - k이다 ex) 1231234에서 3개 제거하면 무조건 4자리 숫자를 반환한다. 2. for문 범위를 문자열 길이 -k까지 돌려준다 3. 두 번째 for 문은 가장 큰 값을 찾기 위한 for문 4 만약 가장 큰 값을 찾았다면 큰 값이 위치한 index+1부터 탐색을 해준다. 5. answer+=max 해서 String을 반환하면 오류 난다 StringBuilder로 해결하자 @Test public void 정답() { System.out.println(solution("1231234", 3)); } public ..
코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr 풀이 : 1. 다중집합 1,2를 선언한다 2. 소문자 대문자를 구분하지 않기 때문에 영문자를 모두 소문자로 바꿔준다. 3. 다중집합 1과 2를 만들어준다 #알파벳만 가능 4. 합지합과 교집합을 구하기 위해 다중집합 1에 원소를 하나씩 꺼내서 다중집합 2를 지워준다. 5. 다중집합 1이 다중집합2에 포함되어 있다면 교집합 intersection +1 씩 해준다. union은 합집합이기 때문에 +1을 계속해준다. 6. 집합 2에 남아있는 원소가..
코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr 풀이 과정 1. HashMap을 통해 genres[] 를 Key별 plays[]를 Value genresMap을 만든다 ex) {pop=3100, classic=1450} 2. 키별 재생횟수 기준으로 내림 차순을 정렬 3. 반복문을 통해 장르별 playMap을 만든다 4. 3번을 재생횟수 내림차순 정렬해준다. 5. !! 곡은 두개만 실을 수 있다. list.size()>1 이라면 더이상 결과값에 넣어주지 않는다. package programmers.level3..
코딩테스트 연습 - 영어 끝말잇기 3 ["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"] [3,3] 5 ["hello", "observe", "effect", "take", "either", "recognize", "encourage", "ensure", "establish", "hang", "gather", "refer", "reference", "estimate", "executive"] [0,0] programmers.co.kr 조건 1. 같은 단어가 있으면 안됨 HashMap 키값 검사 2. str1과 마지막 문자 == str1 첫번째 문자 같아야함 3. 사람인덱스와 차례리턴 package programmers..
COS Pro 1급 Java 모의고사 - 메모장 한 줄에 K자를 적을 수 있는 메모장에 영어 단어들을 적으려 합니다. 영어 단어는 정해진 순서로 적어야 하며, 단어와 단어 사이는 공백 하나로 구분합니다. 단, 한 줄의 끝에 단어 하나를 완전히 programmers.co.kr class Solution { public int solution(int K, String[] words) { // 여기에 코드를 작성해주세요. int answer = 0; String str = ""; for(int i=0;i