본문 바로가기
Programming/Python

[BAEKJOON] 백준 Python 1단계 입출력과 사칙연산 18108번/10430번/2588번

by EunjiBest 2022. 3. 31.

[BAEKJOON] 백준 Python 1단계  입출력과 사칙연산 18108번/10430번/2588번

 

 

18108번(1998년생인 내가 태국에서는 2541년생?!)

 

ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다.
불교 국가인 태국은 불멸기원(佛滅紀元), 즉 석가모니가 열반한 해를 기준으로 연도를 세는 불기를 사용한다. 반면, 우리나라는 서기 연도를 사용하고 있다. 불기 연도가 주어질 때 이를 서기 연도로 바꿔 주는 프로그램을 작성하시오

입력 : 서기 연도를 알아보고 싶은 불기 연도 y가 주어진다. (1000 ≤ y ≤ 3000)

예제입력 : 2541
예제출력: 1998

 

초딩 때 수학문제풀던 실력을 발휘해서 1차방정식을 세워보기로 했다. 

예제 입력값(y)과 출력값(result)을 보니,

2541(y) - 1998 (result) = 543

543차이가 나는 것을 알 수 있다.

 

result를 기준으로 식을 이항시키면

2541(y)-543 = 1998(result)가 된다.

 

그럼 파이썬으로 다음과 같은 식을 쓸 수 있다.

 

y = int(input())
result = y-543
print(result)

 

y에 input()을 정수로 받게 하고,

result = y(input()) - 543을 해주면 된다.

 

 

 

 

10430번

 

(A+B)%C는 ((A%C) + (B%C))%C 와 같을까?
(A×B)%C는 ((A%C) × (B%C))%C 와 같을까?
세 수 A, B, C가 주어졌을 때, 위의 네 가지 값을 구하는 프로그램을 작성하시오.

입력:첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000)
출력:첫째 줄에 (A+B)%C, 둘째 줄에 ((A%C) + (B%C))%C, 셋째 줄에 (A×B)%C, 넷째 줄에 ((A%C) × (B%C))%C를 출력한다.

 

인풋값 3개를 한번에 넣을 수 있도록 코드를 짜라는 문제를 저렇게 어렵게 써둔 것같다.

 

지금까지 해왔던 문제들(A+B, A-B, AxB, A/B)과 똑같이 적용하면 된다.

다만 지금까지는 input값이 2개였다면, 3개가 된 점이다.

 

A,B,C = map(int, input().split())

print((A+B)%C)
print(((A%C) + (B%C))%C)
print(((A*B)%C))
print(((A%C) * (B%C))%C)

 

map함수를 사용해서 

input값 3개를 split한 값을 정수로 바꿔준 후 ,

print문에 출력을 해주면 된다.!

주의할 점은 문제 출력에 x는 *로 바꿔줘야한다.

 

 왜 자꾸 오류가 뜨는지 한참 봤다ㅎㅎ

조금이라도 어긋나면 오류가 나는 신나는 프로그래밍~~

 

 

2588번

 

(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.

(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.

입력 : 첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.
출력 : 첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.

 

문제 수준은 다 초등학교 수학문제 수준인데

이걸 프로그래밍으로 짜려니 의외로 머리가 아프다..

 

일단 찬찬히 문제를 뜯어보자.

 

- 1,2번에 3자리 자연수가 들어간다 = input()

- 1번과 2번의 첫째자리수가 곱해져 3번이 된다.

- 1번과 2번의 둘째자리수가 곱해져 4번이 되고,

- 1번과 2번의 셋째자리수가 곱해져 5번이 되며,

- 1번과 2번을 곱하면 6번이 된다.

 

 

A = int(input())
B = input()

 

지금껏 했던 것처럼 인풋값 2개를 int로 받아주는 식을 세우려고 했는데,

B는 숫자를 쪼개(?)야하기 때문에 문자열로 먼저 받아주기로 했다.

 

즉, A는 int값으로 먼저 바꿔서 받아주고,

B는 input값 그대로 받아 문자열 형태로 받아준다.

 

그리고 나머지는

위에서 썼던 식 순서대로 프린트만 해주면 완성

 

print(A*int(B[2]))
print(A*int(B[1]))
print(A*int(B[0]))
print(A*int(B))

 

 

B의 첫째자리수는 리스트 순서대로 2가 되고, 둘째자리수는 1이되고, 셋째자리수는 0이 된다.

문자열이기 때문에 출력은 int로 바꿔주어야 int인 A와 사칙연산이 가능하다.

 

 

답 : 

 

A = int(input())
B = input()

print(A*int(B[2]))
print(A*int(B[1]))
print(A*int(B[0]))
print(A*int(B))

 

간단한 문제인데 은근히 많은 생각을해서,

어떤 문법을 가져다 쓸 건지 고민해야하는 것이 오래걸리는 것같다.

 

 

 

 

아무튼 이렇게 해서 백준 1단계인 입출력과 사칙연산 모두 끝냈다!

파이썬을 잘하는 것이 목표가 아니니,, 매일매일 조금씩이라도 시간내서 꾸준히 풀도록 노력해야겠다ㅠ

 

 

 

 

반응형

댓글