https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 해설 : 0 또는 양의 정수들이 담긴 배열이 주어졌을 때 각 원소들을 붙여 만들 수 있는 가장 큰 수를 출력하면 된다. 풀이 : 모든 원소들을 이어 붙이기 위해 str 형태로 바꿔준 후 내림차순 정렬하고 앞에서부터 이어붙이면 된다. 여기서 핵심은 내림차순 정렬할 때 단순히 정렬하게 된다면 문제가 생..
https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 해설 : 전화번호 목록들이 담겨있는 배열이 주어질 때, 이 배열의 원소들 중 다른 원소의 접두어가 되는 원소가 있는지 찾는 문제이다. 풀이 : 모든 전화번호를 dictionary에 key값으로 만들어주고 phone_book에 있는 모든 번호들을 첫 자리부터 끝까지 확인하며 Dictionary에 key 값으로 존재하는지 확인하면 된다. 자기 자신일 경우가 반드..
https://programmers.co.kr/learn/courses/30/lessons/68935 코딩테스트 연습 - 3진법 뒤집기 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수 programmers.co.kr 해설 : 자연수 n이 주어질 때, 이 수를 3진수로 변환하여 앞뒤로 뒤집고 다시 10진수로 변환해서 출력하면 된다. 풀이 : n진법으로 변환하는 change 함수를 구현하고 10진수 n을 3진수로 변환하였다. 원래 3진수로 변환할 때 나눈 몫과 나머지에서 reverse를 해주어야 하지만 어짜피 앞 뒤로 뒤집어야 하기..
https://programmers.co.kr/learn/courses/30/lessons/77884 코딩테스트 연습 - 약수의 개수와 덧셈 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주 programmers.co.kr 해설 : left와 right가 주어질 때 left부터 right까지의 정수 중 약수의 개수가 짝수인 것은 더하고 홀수인 것은 빼서 결괏값을 반환하면 된다. 풀이 : 약수의 개수를 구하는 cnt 함수를 만들고 for 문의 범위를 left부터 right 까지 각 정수마다 약수의 개수를 체크한다. 이 때, 개수가 ..
https://programmers.co.kr/learn/courses/30/lessons/64065 코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr 해설 : 원소가 하나씩 증가하는 배열이 주어질 때, 이 배열에서 최종적으로 원래의 n-tuple을 찾으면 된다. 풀이 : 우선 주어진 input값을 가공하는 과정이 필요하다. tuple의 형태로 주어지지만 사실 문자열로 주어지는 데이터이기 때문에 },{를 기준으로 split하여 문자열을 가공해주었고 이를 길이순..
https://programmers.co.kr/learn/courses/30/lessons/67257 코딩테스트 연습 - 수식 최대화 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 programmers.co.kr 해설 : 어떤 수식이 주어질 때 이 수식을 더하기, 빼기, 곱하기의 우선순위를 다르게 하여 계산하고 이 때의 최댓값을 구하는 문제이다. 풀이 : 먼저 permutaions()를 이용해 +, -, * 연산자의 모든 우선순위 조합을 만들어놓고 각 우선순위마다 수식을 다르게 계산하면서 최댓값을 찾는 시도를 하였다. 우선순위를 표현할 수 있는 가장 좋은 방법이 우선순..
https://programmers.co.kr/learn/courses/30/lessons/81302 코딩테스트 연습 - 거리두기 확인하기 [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] programmers.co.kr 해설 : 5x5의 2차 배열이 주어진다. 원소는 P, O, X로 P는 사람, O는 빈자리,..
https://programmers.co.kr/learn/courses/30/lessons/17677 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr 해설 : 영어, 숫자, 특수문자로 이루어진 문자열 str1과 str2가 주어질 때 이 두 집합의 교집합 크기를 합집합 크기로 나눈 값인 자카드 유사도를 측정하여 이 값에 65535를 곱하여 출력하면 된다. 이 때, 특수문자나 숫자는 모두 삭제하며 2글자씩 끊어서 만든 집합의 자카드 유사도를 측정해야 한다. 풀이 : 가장 먼저 두 문자열을 l..
https://programmers.co.kr/learn/courses/30/lessons/42889 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 해설 : 게임을 개발하는 오렐리가 만든 게임에서 스테이지의 수 N과 사람들이 도달한 스테이지들의 정보를 담고있는 배열 stages가 주어질 때, 각 스테이지의 실패율은 스테이지에 도달하였지만 통과하지 못한 사람들의 비율로 나타낼 수 있다. 이 때, 스테이지별 실패율이 높은 순으로 정렬하여 정답을 출력하면 된다. 풀이 : 각 스테이지별로 한 단계씩 진행하며 현재 ..