본문 바로가기

전체 글215

Level2 - 피로도 (완전탐색) 문제 설명 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있습니다. "최소 필요 피로도"는 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도를 나타내며, "소모 피로도"는 던전을 탐험한 후 소모되는 피로도를 나타냅니다. 예를 들어 "최소 필요 피로도"가 80, "소모 피로도"가 20인 던전을 탐험하기 위해서는 유저의 현재 남은 피로도는 80 이상 이어야 하며, 던전을 탐험한 후에는 피로도 20이 소모됩니다. 이 게임에는 하루에 한 번씩 탐험할 수 있는 던전이 여러개 있는데, 한 유저가 오늘 이 던전들.. 2023. 5. 29.
Level2 - [1차] 뉴스 클러스터링 (2018 KAKAO BLIND RECRUITMENT) 문제를 이해하는데 많은 시간이 걸린 문제. "FRANCE"와 "FRENCH"가 주어졌을 때, 이를 두 글자씩 끊어서 다중집합을 만들 수 있다. 각각 {FR, RA, AN, NC, CE}, {FR, RE, EN, NC, CH}가 되며, 교집합은 {FR, NC}, 합집합은 {FR, RA, AN, NC, CE, RE, EN, CH}가 되므로, 두 문자열 사이의 자카드 유사도 J("FRANCE", "FRENCH") = 2/8 = 0.25가 된다. 교집합은 2 , 합집합은 8 0.25 * 65536 을 리턴하면 되는 문제 문제 핵심 ( 문자열을 2개의 문자들로 나눠라, 교집합, 합집합 구해라) 1. 문자 추출 : 슬라이딩 윈도우 문자열에서 길이 2만큼의 문자열들로 추출하여 리스트로 만드는 작업 진행 문자열 마다 .. 2023. 5. 29.
Level2 - 캐시 (2018 KAKAO BLIND RECRUITMENT) 문제 설명 캐시 지도개발팀에서 근무하는 제이지는 지도에서 도시 이름을 검색하면 해당 도시와 관련된 맛집 게시물들을 데이터베이스에서 읽어 보여주는 서비스를 개발하고 있다. 이 프로그램의 테스팅 업무를 담당하고 있는 어피치는 서비스를 오픈하기 전 각 로직에 대한 성능 측정을 수행하였는데, 제이지가 작성한 부분 중 데이터베이스에서 게시물을 가져오는 부분의 실행시간이 너무 오래 걸린다는 것을 알게 되었다. 어피치는 제이지에게 해당 로직을 개선하라고 닦달하기 시작하였고, 제이지는 DB 캐시를 적용하여 성능 개선을 시도하고 있지만 캐시 크기를 얼마로 해야 효율적인지 몰라 난감한 상황이다. 어피치에게 시달리는 제이지를 도와, DB 캐시를 적용할 때 캐시 크기에 따른 실행시간 측정 프로그램을 작성하시오. 입출력 예제 .. 2023. 5. 26.
Level2 - n^2 배열 자르기 굉장히 고민을 많이 해야했던 문제 하지만 답은 굉장히 단순했다. 매개면수 3, 2, 5 가 주어진다면 왼쪽은2차원 배열 크기, 2는 left , 3은 rignt 가 나오고 답은 아래의 배열 리턴 제한사항 n이 10의 7제곱까지 들어올 수 있다. 그렇기에 2차원 배열에 저 값을 채워넣는건 힙 메모리 오버가 발생해서 안된다. 그래서 이런 문제는 정해진 범위가 있다면 그 범위만 구하면 답이 구해진다. 1. 규칙 찾기 (1, 1) ( 1, 2 ) ( 1, 3) -> 1 2 3 ( 2, 1) ( 2, 2) ( 2, 3 ) -> 2, 2, 3 ( 3, 1) ( 3, 2) (3, 3) -> 3, 3, 3 크거나 같은 수가 출력이 된다. 위의 제시에서 left 가 2이고 rigt가 5 이기 때문에 이 부분만 구하면 답.. 2023. 5. 26.
Level2 - 연속 부분 수열 합의 개 문제 설명 철호는 수열을 가지고 놀기 좋아합니다. 어느 날 철호는 어떤 자연수로 이루어진 원형 수열의 연속하는 부분 수열의 합으로 만들 수 있는 수가 모두 몇 가지인지 알아보고 싶어졌습니다. 원형 수열이란 일반적인 수열에서 처음과 끝이 연결된 형태의 수열을 말합니다. 예를 들어 수열 [7, 9, 1, 1, 4] 로 원형 수열을 만들면 다음과 같습니다. 원형 수열은 처음과 끝이 연결되어 끊기는 부분이 없기 때문에 연속하는 부분 수열도 일반적인 수열보다 많아집니다. 원형 수열의 모든 원소 elements가 순서대로 주어질 때, 원형 수열의 연속 부분 수열 합으로 만들 수 있는 수의 개수를 return 하도록 solution 함수를 완성해주세요. 입력 [7,9,1,1,4] 결과 18 입출력 예 설명 입출력 예.. 2023. 5. 26.
Level2 - 괄호 회전하기 (), [] , {} 는 올바른 괄호이다. "[](){}" 이렇게 들어오고나서 한 칸 씩 회전해서 올바른 기호가 몇 번 가능하냐는 문제 1회전 ](){}[ -> 올바른 괄호 x 2회전 (){}[] -> 올바른 괄호 o 3회전 ){}[]( -> 올바른 괄호 x 이런식으로 돌아서 올바른 괄호의 개수를 리턴 하라. "}]()[{" 예시 공략 1. 문자열을 회전 할 수 있느냐 2. 올바른 괄호를 체크 할 수 있느냐 + 홀수면 무조건 올바른 괄호가 나올수 없다. 1. 문자열 회전 ( 1번째 위치부터 마지막까지 자른다. 그리고 뒤에 0번째 문자를 추가) public static int solution(String s) { if(s.length()%2==1) return 0; int cnt = 0; char[] ar.. 2023. 5. 25.
Level2 - 귤 고르기 귤들의 크기가 담긴 배열이 주어진다. [1, 3, 2, 5, 4, 5, 2, 3] 1번 크기 1개2번 크기 2개3번 크기 2개4번 크기 1개5번 크기 2개 개수가 주어지는데 이 중 서로 다른 종류의 수의 최솟값을 리턴해라 6개의 개수가 주어진다면 2번 3번 4번을 담아야 최소크기로 6개를 담을 수 있다.키 값 형태로 접근 HashMap class Solution { public int solution(int k, int[] tangerine) { HashMap hashMap = new HashMap(); int max = 0; for(int x : tangerine){ if(hashMap.containsKey(x)) hashMap.put(x,hashMap.get(x)+1); else hashMap.put.. 2023. 5. 25.
Level2 - 점프와 순간 이동 한 칸 이동은 +1 두 칸 이동은 +0 #1 5 -> 2번만에 #2 6 -> 2번만에 #3 5000 -> 5번만에 입출력 예 #2 처음 위치 0 에서 1 칸을 앞으로 점프한 다음 순간이동 하면 (현재까지 온 거리 : 1) x 2에 해당하는 위치로 이동할 수 있으므로 위치 2로 이동합니다. 이때 1 칸을 앞으로 점프하면 위치3으로 이동합니다. 이때 다시 순간이동 하면 (현재까지 온 거리 : 3) x 2 이동할 수 있으므로 위치 6에 도착합니다. 이 경우가 건전지 사용량이 가장 적으므로 2를 반환해주면 됩니다. (1) 0 부터 어떻게 하면 5까지 아니면 6까지 5000까지 몇번만에 갈지를 생각하느라 고생을 오래 했다. 한칸 이동인 경우와 두 칸 이동인 경우를 DFS로 하여 탐색을 하면 답이 나오지만 범위가 .. 2023. 5. 23.
Level2 - 예상 대진표 레벨 2 부터는 단순 알고리즘이 아니라 문제를 어떻게 해결해야하는지 찾는데에 시간이 많이 걸리는거 같다. 대진표가 있다면 A랑 B랑 몇번째에 만날지 예측해주라는 문제 A = 1 B = 2 라면 1번째에 바로 만나는거라 1을 리턴 A = 1 B = 4 라면 2번째에 만나는 거라 2를 리턴 A = 4 B = 5 라면 최종 3번째 니깐 3을 리턴 무조건 A와 B는 이긴다는 규칙이 있으니깐 이런식으로 이긴다면 계속 좁혀지는걸 확인 뭔가 DP를 사용해야 하나 하다가 그냥 DFS각이 보여서 DFS로 접근 (찾게 된 규칙) + 둘의 차이가 1이면 리턴 && A가 홀수이면 리턴 A = 2 , B = 4 라면 , 위의 식이 만족이 안되니 다시 위로 승격, 그럼 2는 1이되고 4는 2가 되며 위의 조건이 만족하고 2를 리.. 2023. 5. 22.