반응형

🗓️ 문제 설명

  • 과일 장수가 사과 상자를 포장하고 있는데, 사과는 상태에 따라 1점부터 k점까지의 점수를 분류하며, k점이 최상품이고 1점이 최하품의 사과입니다.
  • 한 상자에 사과를 m개씩 담아 포장합니다.
  • 상자에 담긴 사과 중 가장 낮은 점수가 p (1 ≤ p ≤ k)점인 경우, 사과 한 상자의 가격은 p * m입니다.
  • 과일 장수가 가능한 많은 사과를 팔았을 때, 얻을 수 있는 최대 이익을 계산하고자 합니다(사과는 상자 단위로만 판매하며, 남은 사과는 버립니다).
  • 사과의 최대 점수 k, 한 상자에 들어가는 사과의 수 m, 사과들의 점수 score가 주어졌을 때, 과일 장수가 얻을 수 있는 최대이익을 반환하세요.
  • 제한 사항
    • 3 ≤ k ≤ 9
    • 3 ≤ m ≤ 10
    • 7 ≤ socre의 길이 ≤ 1000000
      • 1 ≤ score[i] ≤ k
    • 이익이 발생하지 않는 경우에는 0을 반환하세요
  • 입출력 예시
k m score result
3 4 [1, 2, 3, 1, 2, 3, 1] 8
4 3 [4, 1, 2, 2, 4, 4, 4, 4, 1, 2, 4, 2] 33

 

💻 코드

최종 코드

 

코드 풀이

 

다른 사람 풀이

더보기

풀이 1번

  1. sorted(score) : 주어진 score를 오름차순 정렬
  2. sorted(score)[len(score)%m :: m] : 정렬된 score에서 len(score)%m 인덱스를 m 간격으로 꺼냄
  3. sum() * m : 2번을 통해 꺼낸 값을 각 사과 상자의 최소값이기 때문에 최소값을 모두 더한 후 m을 곱해주면 총 이익을 구할 수 있음

 

반응형
반응형

🗓️ 문제 설명

  • 머쓱이의 조카는 아직 'aya', 'ye', 'woo', 'ma' 네 가지의 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고 연속해서 발음을 하는 것을 어려워합니다.
  • 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 담어의 개수를 반환하세요.
  • 제한 사항
    • 1 ≤ babbling의 길이 ≤ 100
    • 1 ≤ babbling[i]의 길이 ≤ 30
    • 문자열은 알파벳 소문자
  • 입출력 예시
babbling result
['aya', 'yee', 'u', 'maa'] 1
['ayaye', 'uuu', 'yeye', 'yemawoo', 'ayaayaa'] 2

 

💻 코드

최종 코드

 

코드 풀이

 

다른 사람 풀이

더보기

풀이 1번

  1. 3번줄 : babbling에서 문자열 i를 하나씩 꺼냄
  2. 4번줄 : ['aya', 'ye', 'woo', 'ma']에서 값 j를 하나씩 꺼냄
  3. 5 ~ 6번줄 : 4번에서 꺼낸 값 j의 중복이 i에 없다면 j를 공백으로 대체
  4. 7 ~ 8번줄 : i에서 공백을 제거한 값의 길이가 0이라면 answer에서 1을 추가

 

 

알게된 점

더보기

strip() : 원래 문자열의 시작과 끝에서 주어진 문자를 제거하는 함수
             기본적으로는 문자열의 시작과 끝에서 공백을 제거

반응형
반응형

🗓️ 문제 설명

  • 콜라 문제는 빈 병 a개를 가져다주면 콜라 b병을 주는 마트가 있을 때, 빈 병 n개를 가져다주면 몇 병을 받을 수 있는지 계산하는 문제입니다.
  • 보유 중인 빈 병이 a개 미만이면, 추가적으로 빈 빙을 받을 순 없습니다. 
  • 콜라는 받기 위해 마트에 주어야 하는 병 수 a, 빈 병 a개를 가져다 주면 마트가 주는 콜라 병 수 b, 상빈이가 가지고 있는 빈 병의 개수 n이 매개변수로 주어집니다.
  • 상빈이가 받을 수 있는 콜라의 병 수를 반환하세요.
  • 제한 사항
    • 1 ≤ b < a ≤ n ≤ 1000000
    • 정답은 항상 int 범위를 넘지 않게 주어짐
  • 입출력 예시
a b n result
2 1 20 19
3 1 20 9

 

💻 코드

최종 코드

 

코드 풀이

 

 

반응형
반응형

🗓️ 문제 설명

  • 사진 속에 나오는 인물의 그리움 점수를 모두 합산하여 사진별로 추억 점수를 매길려고 합니다.
  • 그리워하는 사람의 이름을 담은 문자열 배열 name, 각 사람별 그리움 점수를 담은 정수 배열 yearning, 각 사진에 찍힌 인물의 이름을 담은 이차원 문자열 배열 photo가 매개변수로 주어질 때, 사진들의 추억 점수를 photo에 주어진 순서대로 배열에 담아 반환하세요.
  • 제한 사항
    • 3 ≤ name의 길이 = yearning의 길이 ≤ 100
      • 3 ≤ name의 원소 길이 ≤ 7
      • name의 원소들은 알파벳 소문자
      • name에는 중복값 X
      • 1 ≤ yearning[i] ≤ 100
      • yearning[i]는 i번째 사람의 그리움 점수
    • 3 ≤ photo의 길이 ≤ 100
      • 1 ≤ photo[i]의 길이 ≤ 100
      • 3 ≤ photo[i]의 원소(문자열)의 길이 ≤ 7
      • photo[i]의 원소들은 알파벳 소문자
      • photo[i]의 원소들은 중복값 X
  • 입출력 예시
name yearning photo result
["may", "kein", "kain", "radi"] [5, 10, 1, 3] [["may", "kein", "kain", "radi"],["may", "kein", "brin", "deny"], ["kon", "kain", "may", "coni"]] [19, 15, 6]
["kali", "mari", "don"] [11, 1, 55] [["kali", "mari", "don"], ["pony", "tom", "teddy"], ["con", "mona", "don"]] [67, 0, 55]
["may", "kein", "kain", "radi"] [5, 10, 1, 3] [["may"],["kein", "deny", "may"], ["kon", "coni"]] [5, 15, 0]

 

💻 코드

최종 코드

 

코드 풀이

 

다른 사람 풀이

더보기

풀이 1번

  • for i in 사진 : 사진을 하나씩 꺼내는 반복문
  • sum(점수[이름.index(j)] for j in i if j in 이름
    • for j in i if j in 이름 : 반복문을 통해 꺼낸 i에서 j을 꺼내 이름에 있는지 확인
    • 점수[이름.index(j)] : 이름 리스트에서 j가 있는 인덱스와 동일한 인덱스의 점수를 꺼냄
    • sum() : 꺼낸 점수를 모두 더함

 

반응형
반응형

🗓️ 문제 설명

  • 선수들이 1대 1로 대결하는 주어진 음식을 빨리 먹는 푸드 파이트 대회를 개최합니다.
  • 준비된 음식을 일렬로 배치한 뒤, 양쪽 끝에서 출발한 선수 중 중앙의 물을 먼저 먹는 선수가 승리합니다.
  • 대회의 공정성을 위해 두 선수가 먹는 음식의 종류와 양은 같아야 하며 음식을 먹는 순서도 같아야 합니다.
  • 칼로리가 낮은 음식을 먼저 먹을 수 있게 배치하여 선수들이 음식을 더 잘 먹을 수 있게 하려고 합니다.
  • 이번 대회를 위해 음식을 주문하는데, 대회의 조건을 고려하지 않고 주문하여 몇 개의 음식을 사용하지 못하게 되었습니다.
  • 준비한 음식의 양을 칼로리가 적은 순서대로 나타내는 정수 배열 food가 주어졌을 때, 대회를 위한 음식의 배치를 반환하세요.
  • 제한 사항
    • 2 ≤ food의 길이 ≤ 9
    • 1 ≤ food의 각 원소 ≤ 1000
    • food에는 칼로리가 적은 순서대로 음식의 양이 담김
    • food[0]은 물이며 항상 1
    • food[i]는 i번 음식의 수
    • 정답의 길이가 3 이상인 경우만 주어짐
  • 입출력 예시
food result
[1, 3, 4, 6] "1223330333221"
[1, 7, 1, 2] "111303111"

 

💻 코드

최종 코드

 

코드 풀이

 

다른 사람 풀이

더보기

풀이 1번

  1. 2번줄 : answer에 '0'을 저장
  2. 3번줄 : food에서 마지막 음식부터 꺼내는 반복문 실행
  3. 4번줄 : i번 음식을 2로 나눈 몫을 c에 저장
  4. 5번줄 : c가 0이 될 때까지 반복하는 반복문 실행
  5. 6~7번줄 : answer의 i번 음식을 저장한 뒤 c를 하나씩 빼줌

 

반응형
반응형

🗓️ 문제 설명

  • 정수 배열 numbers가 주어질 때, 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 오름차순으로 담아 반환하세요.
  • 제한 사항
    • 2 ≤ numbers의 길이 ≤ 100
    • numbers의 모든 수는 0 이상 100 이하
  • 입출력 예시
numbers result
[2, 1, 3, 4, 1] [2, 3, 4, 5, 6, 7]
[5, 0, 2, 7] [2, 5, 7, 9, 12]

 

💻 코드

최종 코드

 

코드 풀이

 

다른 사람 풀이

더보기

풀이 1번

  1. 1번줄 : 라이브러리를 통해 조합함수를 불러옴
  2. 3번줄
    a. numbers에서 2개의 수를 이용해 만들 수 있는 조합을 꺼내는 반복문 시행
    b. 반복문을 통해 나온 조합의 총합을 더한 다음, set로 중복값을 제거
    c. 오름차순 정렬을 진행한 후 반환

 

반응형
반응형

🗓️ 문제 설명

  • 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.
  • 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대한 결과를 배열에 담아 반환하세요.
  • 제한 사항
    • 1 ≤ array의 길이 ≤ 100
    • 1 ≤ array의 원소 ≤ 100
    • 1 ≤ commands의 길이 ≤ 50
    • commands의 각 원소는 길이가 3
  • 입출력 예시
array commands return
[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]

 

💻 코드

최종 코드

 

코드 풀이

 

다른 사람 풀이

더보기

풀이 1번

  • 반복문 대신 lambda 함수를 이용한 방식
반응형
반응형

🗓️ 문제 설명

  • 자연수 n이 매개변수로 주어질 때, n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 반환하세요.
  • 제한 사항
    • 1 ≤ n ≤ 100000000
  • 입출력 예시
n result
45 7
125 229

 

💻 코드

최종 코드

 

코드 풀이

 

 

반응형
반응형

🗓️ 문제 설명

  • 수포자는 수학을 포기한 사람의 준말입니다.
  • 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다.
  • 1번 수포자가 찍는 방식 : 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
  • 2번 수포자가 찍는 방식 : 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
  • 3번 수포자가 찍는 방식 : 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...
  • 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answer가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 반환하세요.
  • 제한 사항
    • 시험은 최대 10000문제로 구성
    • 문제의 정답은 1, 2, 3, 4, 5 중 하나
    • 가장 높은 점수를 받은 사람이 여럿일 경우, 반환값을 오름차순으로 정렬
  • 입출력 예시
answer return
[1, 2, 3, 4, 5] [1]
[1, 3, 2, 4, 2] [1, 2, 3]

 

💻 코드

최종 코드

  • 수정사항
    >> 반환시에 최대값과 같은 값들만 꺼내도록 변경

 

코드 풀이

 

다른 사람 풀이

더보기

풀이 1번

  1. 2~4번줄 : 수포자의 정답 패턴을 저장
  2. 5번줄 : 각 수포자의 정답 개수를 저장
  3. 8~14번줄 : 답지에서 정답을 꺼내면서 수포자의 정답 패턴과 일치하면 정답 개수를 1씩 더함
    1. 수포자의 정답 패턴을 늘리는 대신 인덱스를 통해 정답 패턴과 답지의 패턴과 비교하여 정답 확인
  4. 16~18번줄 : 수포자의 정답 개수를 꺼내면서 가장 많이 맞힌 사람을 result에 저장

 

⚙️ 시행착오

1차 시도

더보기
  • 테스트 케이스 1~4, 13을 제외한 나머지 실패
  • 최대값만 꺼내는 것이 아니라 모든 값을 꺼내서 실패

 

반응형
반응형

🗓️ 문제 설명

  • 명함 지갑을 만드는 회사에서 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서 작아서 들고 다니기 편한 지갑을 만들고자 합니다.
  • 모든 명함의 가로 길이와 세로 길이를 나타내는 2차원 배열 sizes가 매개변수로 주어질 때, 모든 명함을 수납할 수 있는 가장 작은 지갑의 크기를 반환하세요.
  • 제한 사항
    • 1 ≤ sizes의 길이 ≤ 10000
    • sizes의  원소는 [w, h] 형식
    • w는 명함의 가로길이, h는 명함의 세로길이
    • 1 ≤ w, h ≤ 1000
  • 입출력 예시
sizes result
[[60, 50], [30, 70], [60, 30], [80, 40]] 4000
[[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120
[[14,4], [19, 6], [6, 16], [18, 7], [7, 11]] 133

 

💻 코드

최종 코드

 

코드 풀이

 

다른 사람 풀이

더보기

풀이 1번

  • 최종 코드 풀이를 한줄로 압축한 풀이

 

반응형

+ Recent posts