BOJ | 1000번

송치헌·2021년 5월 26일
0
post-thumbnail

Python 풀이

A, B = input().split() #A, B에 문자열을 입력받음 split()함수는 괄호 안의 문자를 기준으로 나눈다.
print(int(A)+int(B)) #문자열 A와 B를 각각 정수형으로 변환 후 더해서 출력

파이썬에서 문자열을 입력받는 input()이라는 함수가 있다. 이 함수는 '문자열'로 입력을 받는다. split()라는 함수는 괄호안의 문자로 문자열을 끊어주는 역할을 한다.

>>> A = input().split('H')
1234H3413

>>> print(A)
['1234', '3413']

문제에서 변수를 A, B로 지정을 했는데 이는 입력받는 문자열을 잘라낸 후 각각 잘려진 문자열을 차례로 AB에 저장한다는 뜻이다.

>>> A, B = input().split('Hi')
My name is CH, Hi everyone and Hi nice to meet you


Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)

변수 2개를 지정했지만 문자열은 3개로 쪼개졌기 때문에 ValueError가 났다.

그 다음 int()라는 함수인데 이것은 괄호안의 문자열 혹은 실수형을 정수형으로 바꿔주는 역할을 한다.

>>> a=3.5
>>> print(int(a))
3
>>> a='15'
>>> print(int(a))
15
>>> a='hi'
>>> print(int(a))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'hi'

'15''hi' 둘다 문자열인데 어떻게 '15'는 숫자인 것을 인식하고 int형으로 바꿔줄 수 있었을까?

정답은 '아스키 코드'이다.

아스키코드(ASCII): 숫자로 문자를 표현하기 위한 일종의 약속이자, 특수문자, 숫자, 문자에 번호를 부여하여 컴퓨터에서 처리하기 쉽게 만드는 것

아스키 코드로 표현했을 때 '15'는 49와 53으로 표현되기 때문에 컴퓨터에선 숫자로 인식하고 정수형으로 바꾸어 줄 수 있었던 것이다.

C++ 풀이

#include <iostream>

using namespace std;

int main(){
    int A;
    int B;
    cin >> A >> B; //표준 입력, A와 B를 입력해라
    cout<<A+B; //표준 출력, A+B의 결과값을 출력해라
    return 0; //적어도 되고 안적어도 된다. main함수가 끝났음을 알려주는 표현이다.
}

C++에서는 변수의 타입을 미리 지정해놓기 때문에 번거롭게 정수형으로 변환할 필요가 없다! 그냥 입력받고 출력하면 끝!

cin을 사용할 때 주의할 점은 cin >> A, B 이런식으로 사용하면 안된다.
위 코드처럼 >> 를 이용하여 입력받는 변수를 분리시켜 주어야한다.

profile
https://oraange.tistory.com/ 여기에도 많이 놀러와 주세요

0개의 댓글