[Python] 그리디 (2)

2023. 4. 16.·🤓 기술 학습 & 공부 기록/Python

이것이 취업을 위한 코딩 테스트다 with 파이썬

 

📍예제3 : 숫자 카드 게임

✅N * M 크기의 2차원 배열에서 각 row에서는 가장 작으면서 전체적인 최댓값을 구하라

 

1 <= N, M <= 100

2차원 배열의 원소는 모두 1만 이하의 자연수

 

✅코드

n, m = map(int, input().split())
board = [list(map(int, input().split())) for _ in range(n)]
max_num = 0

for row in board:
    max_num = max(max_num, min(row))

print(max_num)

"""
입력
3 3
3 1 2
4 1 4
2 2 2

출력
2

입력
2 4
7 3 1 8
3 3 3 4

출력
3
"""

 

📍예제4 : 1이 될 때까지

✅ 2 <= N, K <= 100000 가 주어질 때, 아래 연산을 최소 몇번 반복해서 N을 1로 만들 수 있는지 구하라

- N에서 1 빼기

- N을 K로 나누기 (N이 K의 배수일 때만 가능)

 

✅최대한 많이 나누기

숫자를 빠르게 줄이기 위해 나누기를 먼저 실행

 

✅naive solution

매번 N -= 1을 실행

n, k = map(int, input().split())
start = n
count = 0
while start != 1:
    if start % k == 0:
        start = int(start / k)
    else:
        start -= 1
    count += 1

print(count)

"""
입력
25 5

출력
2

입력
10 3

출력
3

입력
17 4

출력
3
"""

 

✅refactored solution

N이 K의 배수가 되도록 한번에 빼기

n, k = map(int, input().split())
start = n
count = 0

while True:
    # N을 K의 배수로 만들고 그만큼 count에 더하기
    target = (start // k) * k
    count += (start - target)
    start = target
    # N 이 K보다 작아지면 반복문 종료
    if start < k:
        break

    count += 1
    start //= k

count += (start - 1)
print(count)

"""
입력
25 5

출력
2

입력
10 3

출력
3

입력
17 4

출력
3
"""
'🤓 기술 학습 & 공부 기록/Python' 카테고리의 다른 글
  • [Python] virtualenv 모듈로 가상환경 사용하기
  • [Python] reduce 사용하기
  • [Python] 그리디 (1)
  • Python에서 lambda로 배열을 특정 기준으로 정렬하기
지식물원
지식물원
지식이 자라는 식물원!
  • 지식물원
    지식물원
    지식물원
  • 전체
    오늘
    어제
    • 분류 전체보기 (516)
      • 🎨 프론트엔드 공부 (253)
        • JS & TS (92)
        • HTML & CSS (22)
        • React & Next (49)
        • Vue & Nuxt (22)
        • 기타 (68)
      • 🤓 기술 학습 & 공부 기록 (116)
        • Node.js (0)
        • Python (37)
        • 백엔드 (0)
        • 딥러닝 (1)
        • 컴퓨터 일반 (72)
        • 개발 인프라 (6)
      • 👨‍💻 프로젝트 경험 (6)
        • Work (0)
        • Toy (6)
      • ⚙️ 개발 팁 & 노하우 (21)
        • 프론트엔드 (6)
        • 기타 (15)
      • ☕️ 커리어 & 인터뷰 준비 (88)
        • 코딩 테스트 (88)
      • 📰 기술 트렌드 & 생각 정리 (4)
      • 📚 기타 (25)
        • 마케팅 (15)
        • 비개발서적 (10)
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

    • 모바일 접속 시 코드 하이라이팅 깨질 때
  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
지식물원
[Python] 그리디 (2)
상단으로

티스토리툴바