본문 바로가기

코딩테스트/프로그래머스22

Mysql 코딩테스트 준비 1. Limit SELECT name, datetime from animal_ins order by datetime LIMIT 5; // 5이면 위에서 1~5번까지 출력 2. COALESCE ( ifnull(컬럼, ' ') 도 똑같이 사용 됨) SELECT warehouse_id, warehouse_name, address, coalesce(freezer_yn, 'N') as FREEZER_YN from food_warehouse where address like "경기도%" order by warehouse_id /*COALESCE( 컬럼명, '임의출력값' ) -> NULL값을 다른 명칭으로 바꾸어주는 함수로 COALESCE( FREEZER, 'N' ) 작성하면 NULL값이 N으로 출력된다.*/ 3. .. 2023. 6. 14.
Level2 - 땅따먹기 (DP) 문제 설명 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟으면서 내려와야 합니다. 단, 땅따먹기 게임에는 한 행씩 내려올 때, 같은 열을 연속해서 밟을 수 없는 특수 규칙이 있습니다. 예를 들면, | 1 | 2 | 3 | 5 | | 5 | 6 | 7 | 8 | | 4 | 3 | 2 | 1 | 로 땅이 주어졌다면, 1행에서 네번째 칸 (5)를 밟았으면, 2행의 네번째 칸 (8)은 밟을 수 없습니다. 마지막 행까지 모두 내려왔을 때, 얻을 수 있는 점수의 최대값을 return하는 solution 함수를 완성해 주세요. 위 예의 경우, 1행의 네번째 칸 .. 2023. 6. 4.
Level2 - 영어 끝말잇기 n - 참가자 인원 words - 끝말있기 게임 진행 규칙 1. 바로 앞에 말한 단어의 끝자랑 내가 말한 단어의 첫자가 다르면 땡 2. 앞에 이미 말한 단어가 있으면 땡 입출력 예 #1 3명의 사람이 끝말잇기에 참여하고 있습니다. 1번 사람 : tank, wheel, mother 2번 사람 : kick, land, robot 3번 사람 : know, dream, tank 와 같은 순서로 말을 하게 되며, 3번 사람이 자신의 세 번째 차례에 말한 tank라는 단어가 1번 사람이 자신의 첫 번째 차례에 말한 tank와 같으므로 3번 사람이 자신의 세 번째 차례로 말을 할 때 처음 탈락자가 나오게 됩니다. 해결해야 될 규칙 1. 내가 말한 단어가 뒤의 단어의 끝자랑 같은지 2. 내가 말한 단어가 이미 나온 단.. 2023. 6. 2.
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.