반응형

🗓️ 문제 설명

  • 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 반환해주세요.
  • 제한 사항
    • prices의 각 가격은 1 이상 10,000 이하인 자연수
    • prices의 길이는 2 이상 100,000 이하
  • 입출력 예시
prices return
[1, 2, 3, 2, 3] [4, 3, 1, 1, 0]

 

💻 코드

최종 코드

 

코드 풀이

 

반응형
반응형

🗓️ 문제 설명

  • 정수로 이루어진 배열 numbers가 있습니다.
  • 배열의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷 큰수라고 합니다.
  • 정부 배열 numbers가 매개변수로 주어질 때, 모든 원소에 대한 뒷 큰수들을 차례로 담은 배열을 반환해주세요.
  • 단, 뒷 큰수가 존재하지 않는 원소는 -1을 담습니다.
  • 제한 사항
    • 4 ≤ numbers의 길이 ≤ 1,000,000
      • 1 ≤ numbers[i] ≤ 1,000,000
  • 입출력 예시
numbers result
[2, 3, 3, 5] [3, 5, 5, -1]
[9, 1, 5, 3, 6, 2] [-1, 5, 6, 6, -1, -1]

 

💻 코드

최종 코드

 

코드 풀이

 

⚙️ 시행착오

1차 시도

더보기
  • 테스트 결과 : 시간초과 

 

반응형
반응형

🗓️ 문제 설명

  • 땅따먹기 게임을 하려고 하는데, 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다.
  • 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟으면서 내려와야 합니다.
  • 단, 땅따먹기 게임에는 한 행씩 내려올 때, 같은 열을 연속해서 밟을 수 없는 특수 규칙이 있습니다.
  • 마지막 행까지 모두 내려왔을 때, 얻을 수 있는 점수의 최대값을 반환해주세요.
  • 제한 사항
    • 행의 개수 N : 100,000 이하의 자연수
    • 열의 개수는 4개이고, 땅(land)은 2차원 배열로 주어짐
    • 점수 : 100 이하의 자연수
  • 입출력 예시
land answer
[[1, 2, 3, 5], [5, 6, 7, 8], [4, 3, 2, 1]] 16

 

💻 코드

최종 코드

 

코드 풀이

 

다른 사람 풀이

더보기

풀이 1번

  1. 3번줄 : 두번째 행부터 마지막 행까지 i번째 행을 꺼내는 반복문 실행
  2. 4번줄 : 각 행에서 j번째 열을 하나씩 꺼내는 반복문 실행
  3. 5번줄 : land의 i번째 행, j번째 열의 값에 i-1번째 행의 j번째 열을 제외한 값 중 가장 큰 값을 더함
  4. 7번줄 : land의 마지막 행에서 가장 큰 값을 반환

 

반응형
반응형

🗓️ 문제 설명

  • 주차장의 요금표와 차량이 들어오고(입차) 나간(출차) 기록이 주어졌을 때, 차량별로 주차 요금을 계산하려고 합니다.
  • 아래는 하나의 예시를 나타냅니다.
  • 요금표 
기본 시간(분) 기본 요금(원) 단위 시간(분) 단위 요금(원)
180 5000 10 600
  • 입/출차 기록
시간(시:분) 차량 번호 내역
05:34 5961 입차
06:00 0000 입차
06:34 0000 출차
07:59 5961 출차
07:59 0148 입차
18:59 0000 입차
19:09 0148 출차
22:59 5961 입차
23:00 5961 출차
  • 자동차별 주차 요금
차량 번호 누적 주차 시간(분) 주차 요금(원)
0000 34 + 300 = 334 5000 + [ (334 - 180) / 10 ] * 600 = 14600
0148 670 5000 + [ (670 - 180) / 10 ] * 600 = 34400
5961 145 + 1 = 146 5000
  • 어떤 차량이 입차된 후에 출차된 내역이 없다면, 23:59에 출차된 것으로 간주합니다.
  • 00:00부터 23:59까지의 입/출차 내역을 바탕으로 차량별 누적 주차 시간을 계산하여 요금을 일괄로 정산합니다.
  • 누적 주차 시간이 "기본 시간" 이하라면, "기본 요금"을 청구합니다.
  • 누적 주차 시간이 "기본 시간"을 초과하면, "기본 요금"에 더해서, 초과한 시간에 대해서 "단위 시간"마다 "단위 요금"을 청구합니다.
  • 주차 요금을 나타내는 정수 배열 fees, 자동차의 입/출차 내역을 나타내는 문자열 배열 records가 매개변수에 주어질 때, 차량 번호가 작은 자동차부터 청구할 주차 요금을 차례대로 정수 배열에 담아 반환해주세요.
  • 제한 사항
    • fees의 길이 = 4
      • fees[0] = 기본 시간(분)
      • 1 ≤ fees[0] ≤ 1,439
      • fees[1] = 기본 요금(원)
      • 0 ≤ fees[1] ≤ 100,000
      • fees[2] = 단위 시간(분)
      • 1 ≤ fees[2] ≤ 1,439
      • fees[3] = 단위 요금(원)
      • 1 ≤ fees[3] ≤ 10,000
    • 1 ≤ records의 길이 ≤ 1,000
      • records의 각 원소는 "시각 차량번호 내역" 형식의 문자열
      • 시각, 차량번호, 내역은 하나의 공백으로 구분
      • 시각은 차량이 입차되거나 출차된 시각을 나타내며, HH:MM 형식의 길이 5인 문자열
        • HH:MM은 00:00부터 23:59 사이
        • 잘못된 시각은 주어지지 않음
      • 차량번호는 자동차를 구분하기 위한 '0' ~ '9'로 구성된 길이 4인 문자열
      • 내역은 IN(입차) 또는 OUT(출차)로 구성
      • records의 원소들은 시각을 기준으로 오름차순 정렬
      • records는 하루 동안의 입/출차된 기록만 담고 있으며, 입차된 차량이 다음날 출차되는 경우는 주어지지 않음
      • 같은 시각에 같은 차량번호의 내역이 2번 이상 나타내지 않음
      • 마지막 시각(23:59)에 입차되는 경우는 주어지지 않음
      • 주차장에 없는 차량이 출차되는 경우, 주차장에 이미 있는 차량이 다시 입차되는 경우는 주어지지 않음
  • 입출력 예시
fees records result
[180, 5000, 10, 600] ["05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00 5961 OUT"] [14600, 34400, 5000]
[120, 0, 60, 591] ["16:00 3961 IN","16:00 0202 IN","18:00 3961 OUT","18:00 0202 OUT","23:58 3961 IN"] [0, 591]
[1, 461, 1, 10] ["00:00 1234 IN"] [14841]

 

💻 코드

최종 코드

  • 변경 사항
    • 주차시간을 계산하기 위해 생성한 딕셔너리 parking_time를 없애고, 딕셔너리 parking의 value를 리스트로 설정
    • 추가 주차 시간을 계산하기 위해 사용한 divmod 대신 math.ceil 함수로 변경

 

코드 풀이

 

 

⚙️ 시행착오

1차 시도

더보기
  • 테스트 결과 : 6개 통과 / 16개 테스트 (37.5%)

 

반응형
반응형

🗓️ 문제 설명

  • 2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환해주세요.
  • 제한 사항
    • 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하
    • 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수
    • 곱할 수 있는 배열만 주어짐
  • 입출력 예시
arr1 arr2 return
[[1, 4], [3, 2], [4, 1]] [[3, 3], [3, 3]] [[15, 15], [15, 15], [15, 15]]
[[2, 3, 2], [4, 2, 4], [3, 1, 4]] [[5, 4, 3], [2, 4, 1], [3, 1, 1]] [[22, 22, 11], [36, 28, 18], [29, 20, 14]]

 

💻 코드

최종 코드

 

코드 풀이

 

반응형
반응형

🗓️ 문제 설명

  • 어떤 자연수로 이루어진 원형 수열의 연속하는 부분 수열의 합으로 만들 수 있는 수가 몇 가지인지 알아보고자 합니다.
  • 원형 수열이란 일반적인 수열에서 처음과 끝이 연결된 형태의 수열을 말합니다.
  • 원형 수열은 처음과 끝이 연결되어 끊기는 부분이 없기 때문에 연속하는 부분 수열도 일반적인 수열보다 많아집니다.
  • 원형 수열의 모든 원소 elements가 순서대로 주어질 때, 원형 수열의 연속 부분 수열 합으로 만들 수 있는 수의 개수를 반환해주세요.
  • 제한 사항
    • 3 ≤ elements의 길이 ≤ 1000
    • 1 ≤ elements의 원소 ≤ 1000
  • 입출력 예시
elements result
[7, 9, 1, 1, 4] 18

 

💻 코드

최종 코드

 

코드 풀이

 

다른 사람 풀이

더보기

풀이 1번

  1. 2번줄 : elements의 길이를 변수 ll에 저장
  2. 3번줄 : 세트 res를 생성
  3. 5번줄 : ll의 길이만큼 반복되는 반복문 실행
  4. 6번줄 : elements의 i번째 값을 ssum에 저장
  5. 7번줄 : ssum을 2번에서 생성한 res에 추가
  6. 8번줄 : i+1에서 i+ll까지 반복되는 반복문 실행
  7. 9번줄 : ssum에 elements[j%ll]번째 값을 더함
  8. 10번줄 : 업데이트한 ssum을 res에 추가
  9. 11번줄 : res의 길이를 반환

 

 

반응형
반응형

🗓️ 문제 설명

  • 00연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) X 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 
  • 아이언 슈트는 건전지로 작동하는데, 순간이동을 하면 건전지 사용량이 줄지 않지만, 앞으로 K 칸을 점프하면 K 만큼의 건전지 사용량이 듭니다.
  • 아이언 슈트 구매자가 이동하려는 거리 N이 주어졌을 때, 사용해야 하는 건전지 사용량의 최솟값을 반환하세요.
  • 제한 사항
    • 숫자 N : 1 이상 10억 이하의 자연수
    • 숫자 K : 1 이상의 자연수
  • 입출력 예시
N result
5 2
6 2
5000 5

 

💻 코드

최종 코드

 

코드 풀이

 

다른 사람 풀이

더보기

풀이 1번

  • 이진법의 경우, 홀수번째에 1이 있기 때문에 주어진 n을 이진법으로 변경한 뒤에 '1'의 갯수를 세면 배터리의 최소 사용량을 확인할 수 있습니다.

 

 

반응형
반응형

🗓️ 문제 설명

  • 124 나라가 있는데, 이 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.
    • 124 나라에는 자연수만 존재합니다.
    • 124 나라에는 모든 수를 표현할 때, 1, 2, 4만 사용합니다.
10진법 124 나라 10진법  124 나라
1 1 6 14
2 2 7 21
3 4 8 22
4 11 9 24
5 12 10 41
  • 자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 반환하세요.
  • 제한 사항
    • n은 50,000,000 이하의 자연수
  • 입출력 예시
n result
1 1
2 2
3 4
4 11

 

💻 코드

최종 코드

코드 풀이

 

반응형
반응형

🗓️ 문제 설명

  • XX게임에는 피로도 시스템(0 이상의 정수로 표현)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다.
  • 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있습니다.
  • "최소 필요 피로도"는 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도를 나타내며, "소모 피로도"는 던전을 탐험한 후 소모되는 피로도를 나타냅니다.
  • 이 게임에는 하루에 한 번씩 탐험할 수 있는 던전이 여러개 있는데, 한 유저가 오늘 이 던전들을 최대한 많이 탐험하려 합니다.
  • 유저의 현재 피로도 k와 각 던전별 "최소 필요 피로도", "소모 피로도"가 담긴 2차원 배열 dungeons가 매개변수로 주어질 때, 유저가 탐험할 수 있는 최대 던전 수를 반환해주세요.
  • 제한 사항
    • k는 1 이상 5,000 이하인 자연수
    • dungeons의 세로(행) 길이(즉, 던전의 개수)는 1 이상 8 이하
      • dungeons의 가로(열) 길이 = 2
      • dungeons의 각 행은 각 던전의 ["최소 필요 피로도", "소모 피로도"]
      • "최소 필요 피로도"는 항상 "소모 피로도"보다 크거나 같음
      • "최소 필요 피로도"와 "소모 피로도"는 1 이상 1,000 이하인 자연수
      • 서로 다른 던전의 ["최소 필요 피로도", "소모 피로도"]가 서로 같을 수 있음
  • 입출력 예시
k dungeons result
80 [[80, 20], [50, 40], [30, 10]] 3

 

💻 코드

최종 코드

  • 수정사항
    >> 반복문의 range를 dungeons의 길이 대신 순열 p의 길이 사용

 

코드 풀이

 

다른 사람 풀이

더보기

풀이 1번

  1. 1 ~ 3번줄 : 글로벌 변수 및 리스트 생성
  2. 6번줄 : "현재 피로도", 변수, dungeons를 매개변수로 받는 dfs 함수 생성
    1. 7번줄 : 글로벌 변수 answer를 불러옴
    2. 8 ~ 9번줄 : cnt가 answer보다 크다면 answer에 cnt를 저장
    3. 11번줄 : N만큼 반복되는 반복문 실행
      1. 12번줄 : dungeons의 j번째 "최소 필요 피로도"보다 현재 피로도가 크거나 같고, visited의 j번째 값이 0인지 확인하는 조건문 실행
      2. 13번줄 : 조건문이 참이라면 visited의 j번째 값에 1을 저장
      3. 14번줄 : "현재 피로도"에서 "소모 피로도"를 뺀 값, cnt+1, dungeons를 매개변수로 dfs 함수를 재귀적으로 실행
      4. 15번줄 : visited의 j번째 값에 0을 저장
  3. 19번줄 : 글로벌 변수 N, 글로벌 리스트 visited를 불러옴
  4. 20번줄 : N에 dungeons의 길이를 저장
  5. 21번줄 : N의 길이만큼 [0]인 리스트를 visited에 저장
  6. 22번줄 : "현재 피로도", 0, dungeons를 매개변수로 dfs 함수 실행 

 

⚙️ 시행착오

1차 시도

더보기
  • 테스트 결과 : 19개 중 8개 실패 

 

반응형
반응형

🗓️ 문제 설명

  • XYZ 마트는 일정한 금액을 지불하면 10일 동안 회원 자격을 부여합니다.
  • XYZ 마트에서는 회원을 대상으로 매일 한 가지 제품을 할인하는 행사를 합니다.
  • 할인하는 제품은 하루에 하나씩만 구매할 수 있습니다.
  • 알뜰한 정현이는 자신이 원하는 제품과 수량이 할인하는 날짜와 10일 연속으로 일치할 경우에 맞춰서 회원가입을 하려 합니다.
  • 정현이가 원하는 제품을 나타내는 문자열 배열 want와 정현이가 원하는 제품의 수량을 나타내는 정수 배열 number, XYZ 마트에서 할인하는 제품을 나타내는 문자열 배열 discount가 주어졌을 때, 회원등록시 정현이가 원하는 제품을 모두 할인 받을 수 있는 회원등록 날짜의 총 일수를 반환하세요.
  • 제한 사항
    • 1 ≤ want의 길이 = number의 길이 ≤ 10
      • 1 ≤ number의 원소 ≤ 10
      • number[i]는 want[i]의 수량을 의미하며, number의 원소의 합은 10
    • 10 ≤ discount의 길이 ≤ 100,000
    • want와 discount의 원소들은 알파벳 소문자로 이루어진 문자열
      • 1 ≤ want의 원소의 길이, discount의 원소의 길이 ≤ 12
  • 입출력 예시
want number discount result
["banana", "apple", "rice", "pork", "pot"] [3, 2, 2, 2, 1] ["chicken", "apple", "apple", "banana", "rice", "apple", "pork", "banana", "pork", "rice", "pot", "banana", "apple", "banana"] 3
["apple"] [10] ["banana", "banana", "banana", "banana", "banana", "banana", "banana", "banana", "banana", "banana"] 0

 

💻 코드

최종 코드

 

코드 풀이

 

다른 사람 풀이

더보기

풀이 1번

  1. 4번줄 : 딕셔너리 선언
  2. 5번줄 : want의 길이만큼 돌아가는 반복문 실행
  3. 6번줄 : 4번줄에서 선언한 딕셔너리의 키를 want의 i번째 값으로, 값을 number의 i번째 값으로 저장
  4. 8번줄 : discount의 길이에서 9를 뺀 값만큼 돌아가는 반복문 실행
  5. 9번줄 : discount의 i번째부터 10개의 값과 4번줄에서 선언한 딕셔너리가 같은지 확인
  6. 10번줄 : answer에 1을 추가

 

⚙️ 시행착오

1차 시도

더보기
  • 테스트 결과 : 1개 실패

 

반응형

+ Recent posts