본문 바로가기
백준 (코테)

1. [1단계] 제목: 입출력과 사칙연산

by 코린이의 세계 2024. 8. 7.

(시작하기 앞서서)

백준 문제를 풀 코딩 언어로 c++ 혹은 파이썬 중에 고민을 했다. 물론 자바스크립트로 작성할지도 고민했다.

속도는 c++ 이 빠르고 자바스크립트는 프론트엔드 주력 언어이지만, 어디까지나 백준 문제 풀기이고 이는 알고리즘에도 얼추 걸쳐있기에.. 그리고 문법이 쉬운 파이썬으로 일단 정했다. (어차피 코테 준비 끝나면 언어 바꾸기는 1주면 된다.)


1단계.
Hello World!를 출력하시오.

답: print("Hello World!")

출력은 print로 출력한다.


2단계.
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
이때 키포인트는 "첫 번째"에 출력하는 것이다.

답: a, b = map(int, input().split())
print(a+b)

입력은 input으로 받으며 자료형은 정수일때 int이다. split함수는 "쪼개는" 함수이다.

첫 줄에 모든 입력 값을 받기 위해서 map 함수를 이용할 수밖에 없었다.


3단계.
두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오.
이때 키포인트는 "첫 번째"에 출력하는 것이다.

답: a, b = map(int, input().split())
print(a+b)


4단계.
두 정수 A와 B를 입력받은 다음, A×B를 출력하는 프로그램을 작성하시오.
이때 키포인트는 "첫 번째"에 출력하는 것이다.

답: a, b = map(int, input().split())
print(a*b)


5단계.
두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.
이때 키포인트는 "첫 번째"에 출력하는 것이다.

답: a, b = map(int, input().split())
print(a/b)   

// 참고로 0으로 나누면 에러가 난다.


6단계.
두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A% B(나머지)를 출력하는 프로그램을 작성하시오. 
첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A*B, 넷째 줄에 A/B, 다섯째 줄에 A% B를 출력한다.

답: a, b = map(int, input().split())
print(a+b)
print(a-b)
print(a*b)
print(a//b)
print(a%b)


7단계.
준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때, 놀람을 표현하는 프로그램을 작성하시오.

답: print(input() + "??!")

파이썬에서는 입력과 출력에 대한 코드를 한 줄로 요약해서 작성이 가능하다. 그래서 input 받은 문자열에 ??!을 붙인 것을 프린트하면 된다. (어차피 아이디는 동일하므로 따로 정의할 필요도 없다.)


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

답: y = int(input())
print(y - 543)

y 변수에 입력 값을 담고 543을 뺀 것을 프린트하면 된다.


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

답: 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)


10단계.
(세 자릿수) × (세 자릿수)는 다음과 같은 과정을 통하여 이루어진다.
(1)과 (2) 위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6) 위치에 들어갈 값을 구하는 프로그램을 작성하시오.

답: A = int(input())
B = int(input())
print(A * (B % 10))
print(A * (B % 100 // 10))
print(A * (B // 100))
print(A * B)

이건 곱셈의 풀이 과정을 이해하면 된다. 곱셈은 필연적으로 나눗셈과도 연관이 되어있고 이는 몫과 나머지로 자릿수를 표현할 수도 있다는 것임. (이것 말고도 반복문이나 배열 인덱스 접근으로도 풀 수 있다고 합니다)


11단계.
꼬마 정민이는 이제 A + B 정도는 쉽게 계산할 수 있다. 이제 A + B + C를 계산할 차례이다!

답: a, b, c = map(int, input().split())
print(a+b+c)

(이때 숫자 사이 공백을 주는데.. spilt 이용하면 된다.)


12단계.
고양이 출력하기.

답:

print("\    /\ ")
print(" )  ( ')")
print("(  /  )")
print(" \(__)|")

느낌이 특수 문자와 이스케이프 문자에 대한 문제인 거 같지만... 그냥 노가다로 해결했다. (역슬래쉬에 대한 이스케이프 문자 문제)


13단계.
개 출력하기.

답:

print("|\\_/|")
print("|q p|   /}")
print('( 0 )"""\\')
print('|"^"`    |')
print("||_/=\\\\__|")

역슬래쉬를 단독으로 쓰기 위해서는 슬래쉬를 2개 더 써야 하며 큰 따옴표를 쓰기 위해선 작은 따옴표로 묶으면 된다. (문자열에서는 " " 도 되고 ' ' 도 된다.)


느낀 점

12~13단계는 살짝 더럽고 노가다라 좀 그랬지만, 그래도 나머지 문제는 좋았다.

'백준 (코테)' 카테고리의 다른 글

1~4단계 백준 복습  (0) 2024.08.12
4. [4단계] 제목: 1차원 배열  (0) 2024.08.10
3. [3단계] 제목: 반복문  (1) 2024.08.09
2. [2단계] 제목: 조건문  (0) 2024.08.08
0. 백준 방향성 잡기  (0) 2024.08.06