https://programmers.co.kr/learn/courses/30/lessons/76502 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr 해설 : 괄호들로 이루어진 문자열 s가 주어질 때, s를 왼쪽으로 한 칸씩 회전시켜 올바른 괄호 문자열 (모든 괄호들의 짝이 맞는) 이 몇 개 존재하는지 세는 문제이다. 풀이 : 첫 번째로 문자열 s의 길이만큼 s의 가장 왼쪽 요소를 가장 뒤에 붙여주는 작업을 구현했고 이 작업이 수행될 때마다 s가 올바른 괄호 문자열인지 판별하는 함수를 구현하였다. 올바른 괄호 문자열인지 확인하는 방법은 stack 자료구조를 사용하여 s의 왼쪽부터 stack에 쌓고 stack의 top이 넣으려는 괄호와 짝이 맞는다면 제거하는 식으로 진행하여 마지막에 st..
https://programmers.co.kr/learn/courses/30/lessons/67258 코딩테스트 연습 - 보석 쇼핑 ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr 우선, 분류를 구현 문제로 하였지만 사실 투 포인터 문제이다. 이 한 문제 때문에 카테고리를 새로 만들기가 좀 그래서 우선 구현에 넣어두었다. 추후 투 포인터 개념의 문제들을 더 풀게 된다면 카테고리를 옮기도록 하겠다. 해설 : 보석들의 이름이 담겨있는 배열이 주어질 때, 모든 보석의 종류들을 포함하는 가장 짧은 구간을 찾는 문제이다. 풀이 : 문제 설명은 간단하지만 투 포인터의 개념을 모른다면 쉽지 않은 문제..
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/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/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가 주어질 때, 각 스테이지의 실패율은 스테이지에 도달하였지만 통과하지 못한 사람들의 비율로 나타낼 수 있다. 이 때, 스테이지별 실패율이 높은 순으로 정렬하여 정답을 출력하면 된다. 풀이 : 각 스테이지별로 한 단계씩 진행하며 현재 ..
https://programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr 해설 : '(' 과 ')'의 개수가 같다면 이를 '균형잡힌 괄호 문자열' 이라고 부른다. 또한, 균형잡힌 괄호 문자열이면서 '(' 과 ')'의 열고 닫는 짝이 맞다면 이를 '올바른 괄호 문자열' 이라고 부른다. 균형잡힌 괄호 문자열이 주어질 때 이를 올바른 괄호 문자열로 변환해서 반환하면 된다. 풀이 : 프로그래머스에서 이 문제를 level 2로 판단하였는데 개인..
https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 해설 : 손님의 단품요리 주문내역 orders와 코스로 구성할 가짓수 course 배열이 주어질 때, 각 코스마다 어떤 조합으로 코스를 구성해야 가장 잘 팔릴지 선택하는 문제이다. 손님이 단품으로 주문한 메뉴들의 조합을 통해 어떤 코스가 가장 인기있을지 유추해야 한다. 풀이 : 각 손님의 주문내역에서 가능한 요리의 조합을 list에 전부 append한다. 이후 C..