코딩테스트공부 9

[세무민의 코딩일기] 로또의 최고 순위와 최저 순위 문제 풀이

[세무민의 코딩일기] 로또의 최고 순위와 최저 순위 문제 풀이 이번에 풀어본 문제는 2021 Dev-matching : 웹 백앤드 개발 관련하여 출제된 문제이다. 1. 문제 설명 2. 제한사항 및 예시 3. 문제 풀이 방법 이번 문제는 문제 이해만 잘하면 쉽게 풀수 있는 문제입니다. 말 그대로 0을 제외하고 같은 값이 존재하는지 찾아본 뒤에 0값만큼 최고순위에 증가시킨 뒤 순위를 매기면 됩니다. 4. 코드 풀이 def RankCheck(result): return {6:1, 5:2, 4:3, 3:4, 2:5, 1:6, 0:6}.get(result, "rank") def solution(lottos, win_nums): result = [] maxResult = 0 minResult = 0 zeroChec..

세무민의 알고가자 : 프로그래머스 3진법 뒤집기 문제 풀기

최근에 면접 준비하느라 포스팅을 못했는데 면접이 끝나서 오늘 일어나자마자 푼 문제를 포스팅 해보려구 합니다! 오늘 푼 문제는 3진법 뒤집기! 문제 설명 & 제한 사항 & 입출력 예시 풀이 이번 문제는 담백 그 자체! 사실 어렵지 않다. 10진법 -> 3진법 -> 역순 -> 10진법 위에 조건처럼 구현해주면 되는데 여기서 리스트를 이용하면 역순부분을 사용하지 않아도 된다. 즉! 10진법 -> 3진법 -> 10진법 바로 코드를 보도록 하자! # 첫번째 코드 def solution(n): result = [] count = n while count > 0: tmp = count % 3 result.append(tmp) count = int(count / 3) i, check = -1, 0 answer = 0 ..

세무민의 알고가자 : 프로그래머스 카펫 문제 풀기

오늘 풀어볼 문제는 카펫! 생각해보면 쉬웠으나 삽질을 조금 해버림...ㅎ 문제 설명 제한사항 및 입출력 예시 풀이 이 문제는 우선 문제를 이해하는 것이 중요하다. 결국에는 노란색 카펫이 갈색 카펫보다 작아야 한다는 것을 인지해야 한다. 예를 들어서 Brown, Yellow = 24, 24의 예시를 들어보면 아래의 그림처럼 그릴 수 있다. 여기서 중요한 건 노란색의 테이블을 갈색 테이블이 포함해야 한다는점! 여기서 확인할 수 있는것은 아래와 같다! 결국 Yellow는 (x-2)(Y-2)의 값을 일치하는 경우의 수를 찾아야 한다. 반복문을 이용하더라도 위와 같은 경우의 수를 인지하지 못한다면 1~2개 정도의 테스트 케이스를 통과하지 못한다. 그 이유는! Yellow를 포함하지 않는 값을 출력하기 때문! 이번..

세무민의 알고가자 : 프로그래머스 구명보트 문제 풀기

오늘 풀어볼 문제는 구명보트! 문제 설명 제한 사항 및 입출력 풀이 이번 문제는 탐욕법을 이용하는 문제에요 말 그대로 최소보트의 개수를 구해주면 됩니다. 예를 들어서 [70, 80, 50]을 보도록 하죠! limit가 100이라는 건 보트 한개에 최대 용량입니다. 보트에는 최대 2명만 탑승 가능한 경우의 수를 다 만들어보면 70, 80, 90, 70+80, 70+50, 80+50에서 100이하는 70, 80, 90 총 3개입니다. 따라서 최소 보트의 개수는 3개가 필요하게 됩니다. 즉 요약하자면! 1. 보트에는 최대 2명 탑승 가능하다는 조건 2. limit 이하로 탑승 가능하다는 점 3. 정렬을 하면 크기 비교가 더 쉽다. 탐욕법을 이용하게 되면 가장 빠른 접근 방법은 반복문이 되겠죠? 코드 def s..

세무민의 알고가자 : 프로그래머스 소수 찾기 문제 풀기

오늘 풀 문제는 소수 찾기! 문제는 쉽다고 생각했는데 생각보다 접근하고 코드 짜는데 오래 걸렸던 문제! 문제 설명 & 제한 사항 입출력 예시 풀이 일단 이번 문제는 코드 구현은 조금 어려웠으나 문제 푸는 방식은 쉽게 생각이 들었다. 예를 들어서 "011" 으로 문제를 풀어본다면 011라는 문자열을 쪼개서 가능한 숫자를 만든 후 소수인지 판별하면 된다. numbers numbers로 만들 수 있는 수 list 011 0, 1, 1, 01, 11, 10, 01, 011, 101, 110 set 011 0, 1, 01, 11, 10, 011, 101, 110 위의 표처럼 011로 조합할 수 있는 수를 모두 만들어 준 후 SET로 중복값을 제거하면 조합하는 숫자를 모두 확인 가능하다. 즉! 이번 문제를 푸는 방..

세무민의 알고가자 : [프로그래머스] 전화번호 목록 문제 풀기

이번에 풀어볼 문제는 전화번호 목록 문제! 생각보다 쉬웠지만 삽질을 조금 많이함 ㅎ 문제 설명 제한 사항 및 입출력 예시 풀이 사실 이번 문제는 쉽게 접근할 수 있는 문제 중 하나이다. 위의 예시처럼 i번째 문자열이 i+1번째 문자열에 포함이 된다면 False를 반환하면 되구 포함되는 접두사가 하나도 없다면? True를 반환하면 된다. 곰곰히 생각하다가 문제를 풀 방법은 딱 2가지가 생각났다. 첫번째 : 2중 For문을 돌리면서 하나씩 확인해보기 2중 포문으로 사용하는건 정확한 방법이지만 N^2 시간복잡도가 소요되기 때문에 효율성에서 많이 떨어진다. 두번째 : 정렬을 한번 해준 후 하나씩 증가하면서 확인하기 정렬을 이용하는 방법을 생각한 걸 예시로 보여드리면 위에 처럼 문자열 정렬을 하게 되면 포함된 값..

세무민의 코딩일기 : 프로그래머스 크레인 인형뽑기 게임 문제 풀기

사실 동적 알고리즘과 그리디로 멘탈이 탈탈 털렸는데 이번 문제 풀고 멘탈이 회복된 느낌??...ㅎㅎ 일단 30분내로 한문제를 풀었다는 것으로 의미를 둬야겠다. 이번 문제는 2019년도 카카오톡 개발자 겨울 인턴십 문제 중 1개이다. 문제 설명 게임개발자인 죠르디는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. 죠르디는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 1 x 1 크기의 칸들로 이루어진 N x N 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 5 x 5 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 1 x 1 크기의 격자 한..

세무민의 코딩일기 : 프로그래머스 가장 큰 수 문제 풀기!

우선 토요일에 시험을 보고 왔는데.... 생각보다 많이 어려웠고.... 나란녀석 바보같은 실수로 제출을 안해버리는 클라스까지 보여줬다.... 즉... 개망했다. 망했다는 수준보다 더 뛰어넘어서 멘붕이 왔지만 그래도 극복하고 다시 공부해야겠다는 생각을 가졌다. 이번 문제는 말 그대로 가장 큰수를 출력하면 되는데 제공 된 배열을 기반으로 큰 수를 출력하면 됩니다. # 가장 큰 수 number = [3, 30, 34, 5, 9] result = [] for i in number: result.append(str(i)) print(result[0][0]) result.sort(key=lambda x : x*3, reverse=True) for i in range(len(result)): try: if resul..

세무민의 코딩일기 : [HackerRank] Sales by Match 문제 풀기

백준 사이트를 먼저 풀어봐야 하는데 최근에 알고리즘 테스트를 봤던 회사의 문제가 모두 영어로 제공해줬는데... 문제가 영어라는걸 몰랐던 나는.. 멘붕과 해석도 재대로 못해서 시간을 날려버린 결과로 시험을 망쳤다... 비록 내가 공부를 안한것도 문제이지만... 다음에는 영어로 시험보는 회사를 대비하기 위해 시작했다. 오늘 풀어볼 문제는 Sales By Match 해석을 어려워하는 나에게는 구글 번역기가 있으니 ㅎㅎ 우선 N과 Arr는 주어진다. 그렇기 때문에 알고리즘만 신경쓰면 되는데 문제를 간단하게 설명해보면 배열내에서 같은 값끼리 묶었을 때 나올 수 있는 묶음의 개수를 구하면 된다. 해당 문제에서 제공해주는 Sample인데 위의 그림처럼 같은 값이 2개가 존재한다면 묶을 수 있으나 2개가 안된다면 묶을..