220405 BOJ ) 2558, 10950 (입출력 A+B 2,3번째)

2022. 4. 5. 23:18코딩/알고리즘

1) 2558 A+B 2번째 

처음에 사용자로부터 값을 입력받는 코드를 a=input(int()) 라고 거꾸로 썼었다. 당연히 틀렸다고 나왔다. 

파이썬을 주 언어로 쓰지 않다보니, 이 순서가 헷갈렸는데 사용자로부터 입력 받은 값을 다시 정수로 변환하는 과정이 

n = int(input())

이었던 것이다. 

 

그래서 코드를 수정한 결과는 다시 맞았다. 

a=int(input())
b=int(input())
print(a+b)

 

 

 

2) 10950 A+B 3번째 

반복문을 써야 할 것은 감이 왔지만, 만약 for x in range () 에서 () 안에 들어가는 것은 리스트 또는 튜플,문자열인데 

무슨 내용이 들어가야 하지? 배열 내에서 인덱스에 접근하는 것도 아니고.. 감이 오지 않았다. 

 

그리고 저번 A+B 1번째 문제처럼 나란히 입력받고 split()으로 두 정수를 쪼개는 것까지는 감이 왔었다. 

 

 

그래서 다른 분의 코드를 참고해보았다. 

t = int(input()) // 테스트케이스 개수를 사용자로부터 입력받는다 

for i in range(t): 
	a,b = map(int,input().split()) 
    print(a+b)

아.. range 안에 들어갈 문자가 사용자로부터 입력받은 t가 되면 되는거였는데 왜 이걸 놓치고 있었지.

 

그리고 map()함수를 사용했는데 두 수는 공백으로 구분된 하나의 문자열을 입력받고 split() 함수를 이용해서 공백을 기준으로 두 문자열을 분리하고 정수로 변환하기 위해서 map() 함수를 이용하여 코드를 한 줄로 작성

 

 

* map 함수 : 리스트의 요소를 지정된 함수로 처리해주는 함수 

map에는 리스트뿐만 아니라 모든 반복 가능한 객체를 넣을 수 있다. 

 

>>> a = input().split()
10 20 (입력) 
>>> a
['10','20']

 split()을 함으로써 문자열 두 개가 들어가있는 리스트가 만들어진다. 

map을 사용해서 정수로 변환한다. 

>>> a = map(int, input().split()) 
10,20 (입력) 
>>> a
<map object at 0x03DFB0D0>
>>> list(a) 
[10,20]

다시 10 20을 입력하면 맵 객체(map object)가 만들어진다.  이 상태로는 안에 들어있는 값을 볼 수 없으므로 list를 사용해서 리스트로 출력한다. 

 

사실 map()이 반환하는 맵 객체는 이터레이터라서 변수 여러 개에 저장하는 언패킹이 가능.