본문 바로가기
Algorithm/Step by Step

[단계별로 풀어보기 1단계] 입출력과 사칙연산

by lifeisgenie 2023. 3. 5.

https://www.acmicpc.net/problem/2557

 

2557번: Hello World

Hello World!를 출력하시오.

www.acmicpc.net

print("Hello World!")

 

https://www.acmicpc.net/problem/1000

 

1000번: A+B

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

A, B = map(int, input().split())
print(A+B)

위 코드에서 첫 줄을 이해하기 위해서는 먼저 input() 함수를 알아야 한다.

input()은 입력 받은 값을 문자열로 인식해준다. 괄호 안에 아무것도 안 적으면, 아래와 같이 공백의 입력란만 나온다. 만약에 정수형을 입력받고 싶으면 int(input()) 이렇게 하면 된다. 입력받을 때 "당신의 나이는?"이라는 질문이 나오도록 하고 싶으면 함수 안에 질문을 입력하여 프롬프트를 띄워주면 된다. 프롬프트에 22를 입력하면 변수 age에 22가 초기화된다.

>>s = input()
hello
>>s
'hello'

>>age = int(input("당신의 나이는?: "))
당신의 나이는?: 22
>>age
22

split()은 기본적으로 띄어쓰기 기준으로 구분해 주는데, 괄호 안에 특정 문자 등을 넣으면, 해당 문자 기준으로 문장이 나눠진다.

>>s = "Hello Seungjin"
>>s.split()
['Hello', 'Seungjin']

 

그러면 input().split()을 하게 되면 어떻게 될까?

>>n = input().split()
1 2 3 4
>>n
['1', '2', '3', '4']

입력 받은 각각의 값을 리스트로 나누어 준다. 위의 경우에서는 숫자를 입력했지만 문자열로 출력이 됐다. 만약에 int(input().split())을 하면 정수형 리스트로 출력이 될까? 

더보기

Traceback (most recent call last):
  File "/home/main.py", line 1, in <module>
    a, b = int(input().split())
TypeError: int() argument must be a string, a bytes-like object or a real number, not 'list'

정답은 오류다. int() 함수는 리스트를 정수형으로 바꿔줄 수 없다. 이럴 때 map 함수를 활용하는 것이다. 

map 함수의 모양은 아래와 같다.

map(function, iterable)

첫 번째 매개변수에는 함수, 두 번째 매개변수에는 반복 가능한 자료형(리스트, 튜플 등)이 온다. 함수와 반복 가능한 데이터를 입력으로 받아 데이터의 각 요소에 함수를 적용한 결과를 리턴하는 함수이다.

따라서 a, b = map(int, input().split())은 입력받은 값들을 띄어쓰기 기준으로 구분해서 정수형으로 변환 후  a, b 변수에 초기화 해준다.

def sum(a):
    return a+1
    
print(list(map(sum, [1, 2])))
더보기

번외로 map(int, input())에 해당하는 값을 변수로 지정하면 메모리 주소값이 출력된다.

https://www.acmicpc.net/problem/1001

 

1001번: A-B

두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

A, B = map(int, input().split())
print(A-B)

 

https://www.acmicpc.net/problem/10998

 

10998번: A×B

두 정수 A와 B를 입력받은 다음, A×B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

A, B = map(int, input().split())
print(A*B)

 

https://www.acmicpc.net/problem/1008

 

1008번: A/B

두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

A, B = map(int, input().split())
print(A/B)

 

https://www.acmicpc.net/problem/10869

 

10869번: 사칙연산

두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. 

www.acmicpc.net

A, B = map(int, input().split())
print(A+B)
print(A-B)
print(A*B)
print(A//B) #print(int(a/b))
print(A%B)

여기서 주의 해야 될 점은 예제에서 2(몫)를 출력하였다. 즉, 정수형(int)으로 출력했다는 것이다. 파이썬의 경우 정수 둘을 나누고 떨어지지 않을 때 자동으로 실수형(float)으로 출력해준다. a/b는 말 그대로 나눈 값이다. 출력하게 되면 2.33333이 나온다. 그래서 a/b가 아닌 a//b로 출력해야 된다.

 

https://www.acmicpc.net/problem/10926

 

10926번: ??!

준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때

www.acmicpc.net

id = input()
print(id + "??!")

 

https://www.acmicpc.net/problem/18108

 

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

ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다. 불교 국가인 태국

www.acmicpc.net

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

 

https://www.acmicpc.net/problem/10430

 

10430번: 나머지

첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000)

www.acmicpc.net

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)

 

https://www.acmicpc.net/problem/2588

 

2588번: 곱셈

첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.

www.acmicpc.net

num1 = int(input())
num2 = input()

units = int(num2[2])
tens = int(num2[1])
hundreds = int(num2[0])

print(num1*units, num1*tens, num1*hundreds, num1*int(num2), sep="\n")

 

https://www.acmicpc.net/problem/11382

 

11382번: 꼬마 정민

첫 번째 줄에 A, B, C (1 ≤ A, B, C ≤ 1012)이 공백을 사이에 두고 주어진다.

www.acmicpc.net

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

 

https://www.acmicpc.net/problem/10171

 

10171번: 고양이

아래 예제와 같이 고양이를 출력하시오.

www.acmicpc.net

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

파이썬에서 역슬래시(\)를 그대로 출력하고 싶을 경우에는 \\와 같이 \ 앞에 \을 붙여야 \가 출력된다.

이를 이스케이프 문자라고 하는데 아래와 같이 여러가지 종류가 있다.

 

https://www.acmicpc.net/problem/10172

 

10172번: 개

문제 아래 예제와 같이 개를 출력하시오. 입력 출력 예제 입력 1 복사 예제 출력 1 복사 |\_/| |q p| /} ( 0 )"""\ |"^"` | ||_/=\\__|...

www.acmicpc.net

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