코딩테스트 연습 - 피로도 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에 남아있는 원소가..
Redis? 이 그림이 모든 걸 말해주는 거 같습니다. Redis는 Cache 또는 Persistence Data Storage로 사용 가능 아무래도 서비스 사용자가 증가하게 되면 모든 유저의 요청을 DB 접근으로만 처리할 때 DB 서버에 무리가 가고, 성능이 떨어지게 됩니다. 👉 요청된 결과를 미리 저장해 두었다가 빨리 제공하기 위해 캐시를 사용하게 됩니다. 1. Redis Cache는 메모리 단에 위치하기 때문에 디스크보다 용량은 작지만 접근 속도가 빠름 2. Key-Value 저장 구조로 조회시 빠르다. 캐시가 궁금하시다면 참고해주세요 Redis 정리된 자료가 궁금하시다면 참고해주세요 이번 와인추천 프로젝트를 진행하면서 위와 같은 장점 때문에 Spring Boot에 Redis를 적용해보려고 합니다..
코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 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
COS Pro 1급 Java 모의고사 - 숫자 뽑기 자연수가 들어있는 배열에서 숫자 K개를 선택하려 합니다. 이때, 선택한 숫자 중 가장 큰 수와 가장 작은 수의 차이가 최소가 되도록 해야합니다. 예를 들어 배열에 들어있는 숫자가 [9, 11, 9, 6, 4, programmers.co.kr import java.util.*; class Solution { public int solution(int[] arr, int K) { // 여기에 코드를 작성해주세요. Arrays.sort(arr); int answer = Integer.MAX_VALUE; for(int i=0;i
COS Pro 1급 Java 모의고사 - 꽃피우기 정사각형 크기 격자 모양 정원에 칸마다 핀 꽃 또는 피지 않은 꽃을 심었습니다. 이 정원의 꽃이 모두 피는 데 며칠이 걸리는지 알고 싶습니다. 핀 꽃은 하루가 지나면 앞, 뒤, 양옆 네 방향에 있 programmers.co.kr // 다음과 같이 import를 사용할 수 있습니다. import java.util.*; class Solution { static class Dot{ int x; int y; int nextDay; Dot(int x,int y,int nextDay){ this.x = x; this.y =y; this.nextDay =nextDay; } } public int solution(int[][] garden) { // 여기에 코드를 작..