[algorithm] 백준 단계별 문제 풀이 (기본 수학 1 - 2탄)
안녕하세요. 심심한 코딩쟁이입니다.
오늘은 기본적인 수학 지식을 사용하는 문제들로 구성해 보았습니다.
파이썬3 를 사용해 문제 풀이를 진행하겠습니다.
문제마다 링크를 걸어두었으니 문제를 살펴보시고 문제를 푼 다음에 저와
풀이를 비교해 보시는 걸 추천드립니다.
차근차근 풀어봅시다.
백준 BAEKJOON 10250
https://www.acmicpc.net/problem/10250
10250번: ACM 호텔
프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수
www.acmicpc.net
문제 해석
문제에서 주어지는 층 수, 각 층의 방 수, 몇 번째 손님 이라는 3가지 정보를 가지고 손님이 배정받을
방의 호수를 출력해야하는 문제입니다.
엘리베이터로부터 최소한의 이동거리를 가지는 배정 방법을 코드로 구현해봅시다.
풀이
t = int(input())
for i in range(t):
h, w, n = map(int, input().split())
a, b = (n % h, n // h + 1) if n % h != 0 else (h, n // h)
print("%d%02d" % (a, b))
풀이 해석 및 팁
로직은 크게 어려울 것 없이 직관적으로 생각하고 구현해보았습니다.
손님의 순번을 호텔의 층 수로 나누었을 때 나머지가 0인지 아닌지를 기준으로 배정받을 방 번호를 계산합니다.
if 조건 else 상항연산자를 사용해 조건의 값이 참이면 if 왼쪽의 코드가, 거짓이면 else 오른쪽의 코드가 사용됩니다.
백준 BAEKJOON 2775
https://www.acmicpc.net/problem/2775
2775번: 부녀회장이 될테야
첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다
www.acmicpc.net
문제 해석
문제에 등장하는 아파트의 살기 위한 조건이 아주 독특합니다.
만약 본인이 3층 3호에 입주한다고 가정하면 거주 조건은 2층의 1호부터 3호에 거주하고있는 모든 사람의 수만큼
3층 3호에 데리고와야 입주가 가능하게됩니다.
문제가 원하는 출력값은 층수와 호수가 주어질 때 몇명이 존재해야 거주할 수 있느냐를 출력하는 것 입니다.
풀이
n = int(input())
for _ in range(1, n+1):
a = int(input())
b = int(input())
f1 = [x for x in range(1, 15)] # 14호까지 존재
f2 = []
for i in range(1, a+1): # 한 층 한 층 올라가면서 거주인원 계산
for j in range(1, 15):
f2.append(sum(f1[:j]))
f1.clear()
f1.extend(f2)
f2.clear()
print(f1[b-1])
풀이 해석 및 팁
우리는 0층에 14호까지의 사람 수를 알고있습니다.
이를 활용해 문제에서 주어진 층과 호수에 살고있는 사람의 수를 계산하기 위해 한 층 한 층 올라가면서
각 호수에 살고있는 사람의 수를 계산합니다.
원하는 층까지 계산을 마쳤다면 해당 호수의 사람 수를 출력합니다.
백준 BAEKJOON 10757
https://www.acmicpc.net/problem/10757
10757번: 큰 수 A+B
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
문제 해석
파이썬을 이용해 풀기에는 아주 간단한 문제입니다.
풀이
a, b = map(int, input().split())
print(a+b)
풀이 해석 및 팁
다른 언어에서는 오버플로우 문제로 인해 큰 수를 다루려면 특정 동작을 취해줘야하지만
파이썬에는 오버플로우가 없기 때문에 단순히 입력받고 합을 출력하면 문제가 해결됩니다.
여기까지 백준 단계별 문제풀이 기본 수학 1 - 2탄의 풀이 내용이었습니다.
문제를 풀다가 새로운 개념을 알게될 경우 잘 정리해두었다가 비슷한 문제가 나왔을 때 활용할 수 있도록
복습 또는 비슷한 유형의 문제를 자주 풀어보시길 바랍니다.
궁금하신 점이나 도움이 필요하신 분들은 댓글로 남겨주세요.
감사합니다.
'programming > algorithm' 카테고리의 다른 글
[algorithm] 백준 단계별 문제 풀이 (약수, 배수와 소수 2탄) (0) | 2023.03.15 |
---|---|
[algorithm] 백준 단계별 문제 풀이 (약수, 배수와 소수 1탄) (0) | 2023.03.14 |
[algorithm] 백준 단계별 문제 풀이 (기본 수학 1 - 1탄) (0) | 2023.03.09 |
[algorithm] 백준 단계별 문제 풀이 (2차원 배열) (0) | 2023.03.06 |
[algorithm] 백준 단계별 문제 풀이 (심화 2탄) (0) | 2023.03.02 |