[백준] 단계별문제 Lv.1 입출력과 사칙연산

유림·2022년 7월 4일
0

알고리즘

목록 보기
1/28

알고리즘 공부를 어디서부터 해야할지 잘 모르겠어서
파이썬 문법부터 알려주는 알고리즘 책으로 아침마다 스터디를 하고 있다.

근데 오늘은... 못일어났는지 연락이 안된다 책도 나한테 없다보니...!
그래서 오늘은 '백준 알고리즘'의 단계 완전 초보용! Lv.1 입출력과 사칙연산을 풀어보려고한다.

시작하기 전 Tip:

1)파이썬으로 문제를 풀어도 좋지만, pypy3로 하면 코어적으로 더 빠르게 동작하기 때문에 권장한다고 합니다 단, 메모리를 더 사용할 수 있기 때문에 파이썬으로 제출 후 안되면 PyPy3로 제출해보는 것도 방법이다

2)출력하는 문제의 경우 작은 글자오타도 반영되기 때문에
가능하면 복사+붙여넣기로 작성하는것이 불필요한 시간낭비를 줄일 수 있다

3)마지막으로 사칙연산에서 마지막으로 알아두어야할 팁!
+, -, /, * : 더하기, 빼기, 나누기, 곱하기
%, // : 나누기 후 나머지, 나누기 후 몫

[2557번 문제]

: 구글링을 해보면 간단한 이 문제만으로도 다양한 풀이방법이 업로드 되어있는데
아무것도 모르는 코린이이기 때문에 단순하게 풀고 넘어가보았다.

print('Hello World!')

[10718번 문제]

: 순간 초보자가 보기에 '이게 뭔 소리야? 캠프?'라고 생각이 들 수 있지만 결국 출력을 동일하게 하면 정답을 맞출 수 있다.
파이썬에서는 print로 출력하면 한줄씩 차지하기 때문에 그대로 2번 출력해주면 된다.

print('강한친구 대한육군')
print('강한친구 대한육군')

[10171]

: 주의해야할 것은 2가지이다.
첫번째는 (백슬래쉬)를 그대로 출력하기 위해선 문자 뒤에 \를 하나 더 넣어줘야하는 점
두번째는 '(작은따음표)를 그대로 출력하기 위해선 출력문자를 감싸는 따움표를 ""(큰따움표)로 작성해야하는 점이다
''(작은따음표)로 작성할 경우 (' ) ( ')') -> ' ) ( '와 ) 2가지로 따로 인식할 수 있기 때문이다

print('\    /\\')
print(" )  ( ')")
print('(  /  )')
print(' \(__)|')
  • 강아지 모양을 따라하는 문제도 있지만 그 정도로 문법문제가 나오진 않는다하여 패스하였다
    [1000번 문제]

    :input_number = input().split(' ')
    ---> input_number는 명찰처럼 단순 이름이다 input_data, data 등 보기 편한 이름으로 지정하면된다
    ---> input()함수는 입력을 받겠다는 것을 의미하고, .split(' ')는 띄어쓰기를 기준으로 나눠서 보겠다는 것을 의미한다 때문에 작은따음표 안에 띄어쓰기를 해줘야한다

A = int(input_number[0])
B = int(input_number[1])
--->A,B라는 임의의 문자에 input_number의 0번째, 1번째 숫자를 할당하겠다는 의미이다
(여기서 컴퓨터의 첫번째 숫자는 1이 아닌 0이기 때문에 0,1,2,3 순으로 작성하는 것은 참고해주세요)
--->위 함수를 int()함수 안에 넣어줘서 정수값으로 만들어줘야한다
예를 들어 (1 3)입력했다면 1+3=4가 되는 것이 아니라 문자 그대로 ('1'+'3')이 되어 13이 출력되기 때문이다

input_number = input().split(' ') ---> input_number는 명찰처럼 단순 이름이다.
A = int(input_number[0])
B = int(input_number[1])
print(A + B)

[1008번 문제]

: 위와 동일하게 사칙연산을 +에서 /로 변경해주면 끝이다. 소숫점자리까지 친절하게 알아서 출력된다
단, 파이썬이기 때문에 가능하다. 다른 언어였을 경우 소숫점까지 출력하기 위해 별도의 문법이 추가되었을 수 있는 점은 참고하자

[10430번 문제]

:주의할 점은 2가지이다
첫번째는 split()는 항상 ''안에 있을 필요는 없다 split에 '' 또는 띄어쓰기를 해놓고 습관적으로 A, B, C라고 작성할 경우 에러가 뜨고 시간낭비가 될 수 있으니 별것 아니지만 주의하자
두번째는 문제를 옮겨적을 때 먼저 연산되어야하는 부분에 ( )를 잘 넣어주자 이상하게 틀리면 에러 뜬다

A,B,C = input().split()
A = int(A)
B = int(B)
C = int(C)

print((A+B)%C)
print(((A%C)+(B%C))%C)
print((A*B)%C)
print(((A%C)*(B%C))%C)

위 10430문제는 풀이방법이 1가지 더 있다
map함수를 사용하면 더 짧은 코드로 문제를 풀 수 있다
: int함수는 리스트를 정수형으로 바꾸어줄 수 없지만 map함수는 가능하다
예시)

A,b = map(int, ['231', '1234'])
A
231
B
1234
(그냥 int함수는 리스트를 정수처럼 출력할 수 없음)

: 따로 int설정을 하나씩 해주지 않고, map(int, input())형태로 작성하면 더 짧은 코드로 정수값을 출력받을 수 있다

A,B,C = input().split()
A = int(A)
B = int(B)
C = int(C) 
-- 이 부분을 아래와같이 줄일 수 있다 -- 

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

(동빈나 유튜브 참고하였습니다 설명 good)

profile
ɪ ʜᴏᴘᴇ ᴛᴏ sᴏʟᴠᴇ ʀᴇᴀʟ ᴘʀᴏʙʟᴇᴍs👩🏻‍💻❤️

1개의 댓글

comment-user-thumbnail
2022년 7월 4일

잘 보고 갑니다~

답글 달기