본문 바로가기

프로그래머스

[프로그래머스] 거리두기 확인하기 (Python 파이썬) https://programmers.co.kr/learn/courses/30/lessons/81302#fn1 코딩테스트 연습 - 거리두기 확인하기 [["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 문제 설명 대기실 상태가 그래프(배열)로 주어진다. 응시자 간 간격이 맨하튼 거리 .. 더보기
[프로그래머스] 경주로 건설 (Python 파이썬) programmers.co.kr/learn/courses/30/lessons/67259 코딩테스트 연습 - 경주로 건설 [[0,0,0,0,0,0,0,1],[0,0,0,0,0,0,0,0],[0,0,0,0,0,1,0,0],[0,0,0,0,1,0,0,0],[0,0,0,1,0,0,0,1],[0,0,1,0,0,0,1,0],[0,1,0,0,0,1,0,0],[1,0,0,0,0,0,0,0]] 3800 [[0,0,1,0],[0,0,0,0],[0,1,0,1],[1,0,0,0]] 2100 [[0,0,0,0,0,0],[0,1,1,1,1,0],[0,0,1,0,0,0],[1,0,0,1,0,1],[ programmers.co.kr 문제 설명 문제의 설명이 위 링크에 상세하게 나와있습니다. (0,0) 칸 부터 (N-1, N-1)칸 .. 더보기
[프로그래머스] 보석 쇼핑 (Python 파이썬) programmers.co.kr/learn/courses/30/lessons/67258 코딩테스트 연습 - 보석 쇼핑 ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr 문제 설명 위 링크에 나온 설명처럼, 모든 종류의 보석을 적어도 1개 이상 포함하는 가장 짧은 구간을 찾는 문제입니다. 풀이 과정 이 문제는 투 포인터 유형의 문제입니다. 변수로 주어진 보석들의 목록인 gems에는 보석들이 중복되어 포함되어 있습니다. 그래서 보석의 종류만을 구하기 위해 set을 이용해 setlen에 보석의 종류를 넣어줬습니다. start와 end를 처음지점으로 놓고, 최초의 길이는 처음부터 끝까지로 지정합니.. 더보기
[프로그래머스] 수식 최대화 (Python 파이썬) programmers.co.kr/learn/courses/30/lessons/67257 코딩테스트 연습 - 수식 최대화 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 programmers.co.kr 문제 설명 문제의 설명이 굉장히 길어 위 링크를 참고하시는 것을 추천드립니다. 수식 ex ("100-200*300-500+20") 이 주어졌을 때 +, -, *의 우선순위를 매번 다르게 하여 나타나는 값들 중 최댓값을 구하는 문제입니다. 원래는 * > +,- 의 우선순위를 갖지만, 이 문제에서는 *>+>- 가 될 수도 있고 +>->* 가 될 수도 있습니다. 풀이 과정 per.. 더보기
[프로그래머스] 메뉴 리뉴얼 (Python 파이썬) programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 문제 설명 문제에 대한 설명이 굉장히 길어 링크로 대체합니다. 주어진 orders중에 course 개수 만큼 코스요리로 재구성할 수 있는 메뉴들을 알파벳 오름차순으로 골라내면 됩니다. 풀이 과정 풀이 ① 딕셔너리를 이용하여, 메뉴를 구성할 수 있는 모든 경우의 수를 정리합니다. 각각의 경우에 대해 개수를 세어준 후에, 해당 케이스의 주문 횟수가 2회 이상이면서, 최댓값인 경우에.. 더보기
[프로그래머스] 순위 검색 (Python 파이썬) programmers.co.kr/learn/courses/30/lessons/72412 5: queryl[j].remove("and") for i in range(len(infol)): for j in range(len(queryl)): flag = 0 for k in range(4): if infol[i][k] != queryl[j][k]: if queryl[j][k] != '-': flag = 1 break if flag == 0: if int(infol[i][4]) >= int(queryl[j][4]): answer[j] += 1 return answer 효율성을 통과하기 위해 사용한 방법은, 딕셔너리(자바의 hash와 비슷한 파이썬의 자료구조), 이분탐색(BinarySearch)를 이용했습니다. .. 더보기
[프로그래머스] 줄 서는 방법 (Python 파이썬) programmers.co.kr/learn/courses/30/lessons/12936 코딩테스트 연습 - 줄 서는 방법 n명의 사람이 일렬로 줄을 서고 있습니다. n명의 사람들에게는 각각 1번부터 n번까지 번호가 매겨져 있습니다. n명이 사람을 줄을 서는 방법은 여러가지 방법이 있습니다. 예를 들어서 3명의 사람 programmers.co.kr 문제 설명 입력으로 n과 k를 입력받는다. 1번부터 n번까지 n명의 사람들이 줄을 서 있다. 이 n명의 사람이 줄을 서는 방법에는 여러가지가 있는데, 방법을 사전 순으로 정렬하였을 때 제일 첫 방법을 1번째 방법, 마지막 방법을 n번째 방법이라 하자. 이 때, k번째 방법을 구하면 된다. 풀이 과정 처음 배열(answer)는 1부터 n번까지 차례대로 [1,2,3.. 더보기
[프로그래머스] 숫자의 표현(Python 파이썬) programmers.co.kr/learn/courses/30/lessons/12924 코딩테스트 연습 - 숫자의 표현 Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 programmers.co.kr 문제 설명 n이라는 숫자가 있을 때, 이 숫자를 연속된 수들의 합으로 나타낼 수 있는 가지 수를 구하는 문제이다. 예를 들어, n = 15이면 1 + 2 + 3 + 4 + 5 = 15 4 + 5 + 6 = 15 7 + 8 = 15 15 = 15 이렇게 나타낼 수 있으므로 n=15일 때의 정답은 4이다. 풀이 과정 일일이 확인해가며 해당 경우에 참인지 거짓인.. 더보기