[백준] 1단계 입출력과 사칙연산 풀이_12.28
안녕하세요. Harry입니다.
본 포스팅의 목적은, 코딩테스트를 준비함에 있어 백준에 제시된 문제 풀이와 스스로 얻은 정보를 정리하고자 합니다.
그러므로 단순히 문제를 푸는 것이 중요한 것이 아니라, 문제를 통해 얻어가는 것이 있어야하기 때문에 접근 방식은 이전 기초 300제를 풀었을 때랑 동일합니다.
[접근 방식]
- 문제에서 요구하는 역량은 무엇인지?
- 알고 있어야하는 지식은 무엇인지? 에 기반하여 풀이하고자 합니다.
- 백준 문제 링크입니다. : https://www.acmicpc.net/step/1
입출력과 사칙연산 단계
입출력과 사칙연산
www.acmicpc.net
아래 작성된 답안은 제가 직접 작성 후 백준 페이지에서 채점하여 정답으로 인정된 답안입니다.
공식 답안이 아니므로 최적의 해가 아닐 수 있으며, 답안은 다른 분들과 상이할 수 있습니다.
1. Hello World!를 출력하시오.
print("Hello World!")
2. 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
- 요구역량 : 동시에 2개의 숫자를 받아 계산한 값을 넣을 수 있는가?
여기서 쓰인 map(int, input().split())은 백준 문제 풀이 시 거의 공식이더라구요.
사용자에게 첫번째 줄에서 2개의 숫자(문자열)를 받아 띄어쓰기를 기준으로 2개 요소로 구분하는 것(이때 문자열을 숫자자료형으로 변경)
1) input() : 사용자로부터 하나의 문자열을 입력받음
2) input().split() : 사용자로부터 입력받은 문자열을 띄어쓰기 기준으로 구분하여 리스트 내 정렬
다만 이후 int(input().split())은 활용할 수 없는데, 왜냐하면 int 함수는 리스트를 정수형으로 변경해줄 수 없기 때문입니다.
그러므로 map(적용함수, 반복 가능한 자료형) 함수를 활용하여 입력받은 두개의 요소를 정수형으로 변경해야합니다.
적용함수 = int, 반복 가능한 자료형 = input().split()
3) map(int, input().split())
즉, input().split()을 통해 생성된 리스트 내 요소를 모두 int형으로 바꿔서 출력하는 것 입니다.
a, b = map(int, input().split())
if 0 < a < 10 and 0 < b < 10:
print(a+b)
3. 두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오.
- 요구역량 : 동시에 2개의 숫자를 받아 계산한 값을 넣을 수 있는가?
a,b = map(int,input().split())
print(a-b)
4. 두 정수 A와 B를 입력받은 다음, A×B를 출력하는 프로그램을 작성하시오.
- 요구역량 : 동시에 2개의 숫자를 받아 계산한 값을 넣을 수 있는가?
a,b = map(int,input().split())
print(a*b)
5. 두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.
- 요구역량 : 동시에 2개의 숫자를 받아 계산한 값을 넣을 수 있는가?
a,b = map(int,input().split())
print(a/b)
6. 두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오.
- 요구역량 : 동시에 2개의 숫자를 받아 계산한 값을 출력할 수 있는가?
여기서 주의해야할 점은, A/B(몫)을 출력해야하는 점입니다.
파이썬에 나눗셈은 2가지가 있는데,
1) A/B : 몫 + 나머지 출력(float형)
2) A//B : 몫만 출력(int형)
고로, 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라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때, 놀람을 표현하는 프로그램을 작성하시오.
- 요구역량 : 입력된 문자열에 타 문자열을 더하여 출력할 수 있는가?
a = input()
print(a+'??!')
8. ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다.
불교 국가인 태국은 불멸기원(佛滅紀元), 즉 석가모니가 열반한 해를 기준으로 연도를 세는 불기를 사용한다. 반면, 우리나라는 서기 연도를 사용하고 있다. 불기 연도가 주어질 때 이를 서기 연도로 바꿔 주는 프로그램을 작성하시오.
- 요구역량 : 입력된 문자열에 타 문자열을 더하여 출력할 수 있는가?
y = int(input())
print(y-543)
9. 동혁이는 오래된 창고를 뒤지다가 낡은 체스판과 피스를 발견했다.
체스판의 먼지를 털어내고 걸레로 닦으니 그럭저럭 쓸만한 체스판이 되었다. 하지만, 검정색 피스는 모두 있었으나, 흰색 피스는 개수가 올바르지 않았다.
체스는 총 16개의 피스를 사용하며, 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성되어 있다.
동혁이가 발견한 흰색 피스의 개수가 주어졌을 때, 몇 개를 더하거나 빼야 올바른 세트가 되는지 구하는 프로그램을 작성하시오.
- 요구역량 : 현실 응용 문제를 읽고 입출력을 구분하여 입력요소를 특정 수에서 뺀 값을 각각 출력할 수 있는가?
a = list(map(int, input().split()))
print(1-a[0],1-a[1],2-a[2],2-a[3],2-a[4],8-a[5])
10. (A+B)%C는 ((A%C) + (B%C))%C 와 같을까?
(A×B)%C는 ((A%C) × (B%C))%C 와 같을까?
세 수 A, B, C가 주어졌을 때, 위의 네 가지 값을 구하는 프로그램을 작성하시오.
- 요구역량 : 특정 문자열의 인덱스의 값을 계산하여 출력할 수 있는가?
a = list(map(int, input().split()))
print((a[0]+a[1])%a[2])
print(((a[0]%a[2])+(a[1]%a[2]))%a[2])
print((a[0]*a[1])%a[2])
print(((a[0]%a[2])*(a[1]%a[2]))%a[2])
11. (세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.
(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.
- 두개 숫자를 입력받아 한 숫자와 다음 숫자의 한자리씩 곱한 값을 출력할 수 있는가?
a = int(input())
b = input()
print(a*int(b[2]))
print(a*int(b[1]))
print(a*int(b[0]))
print(a*int(b))
12. 아래 예제와 같이 고양이를 출력하시오.
- 요구역량 : 특정 특수문자랑 문자열 기호랑 혼합하여 출력할 수 있는가?
print("""\ /\ """)
print( """ ) ( ')""")
print("""( / )""")
print(""" \(__)|""")
13. 아래 예제와 같이 개를 출력하시오.
- 요구역량 : 특정 특수문자랑 문자열 기호랑 혼합하여 출력할 수 있는가?
print("""|\_/| """)
print( """|q p| /}""")
print('''( 0 )"""\ ''')
print("""|"^"` |""")
print("""||_/=\\\__|""")
14. 아래 예제와 같이 새싹을 출력하시오.
- 요구역량 : 특정 특수문자랑 문자열 기호랑 혼합하여 출력할 수 있는가?
print(""" ,r'"7""")
print("""r`-_ ,' ,/""")
print(""" \. ". L_r'""")
print(""" `~\/""")
print(""" |""")
print(""" |""")
기초 문제라서 별 어려움 없이 풀었던 것 같습니다.
감사합니다.