백준 25314번 풀이

문제

보자마자 이거 파이썬으로 풀어도 되는건가 진지하게 고민하긴 했는데 4의 배수가 입력되면 그거 4로 나눠서 long을 그만큼 출력해야 한다.

Reference

https://learn.microsoft.com/ko-kr/cpp/cpp/data-type-ranges?view=msvc-170

풀이

책을 뭘 읽고 간거냐… 참고로 C언어에서는 제일 긴 게 롱롱이다. 롱롱 unsigned 기준으로 범위는 18,446,744,073,709,551,615이고 signed이면 –9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807. unsigned는 음수따원 없다. 아무튼… 64바이트라고 롱롱롱롱롱롱롱롱롱롱…롱 인트 이런 사태는 없으니 안심하시길.

import sys 
byte = int(sys.stdin.readline())

사실 입력은 간단하다. 항상 문제는 로직과 출력이지. 여기서는 for랑 while 투트랙으로 풀어볼건데 for와 while은 맥락이 다른 반복문이라는 걸 잊지 말자. for는 범위가 주어지고 while은 조건이 주어진다.

import sys 
byte = int(sys.stdin.readline())

for i in range(byte // 4):
    print('long')
print('int')

아 이거 로직은 저게 맞는데 그냥 내면 안된다. 내 말 들어요. 저거 저대로 내면 출력 망해.

import sys 
byte = int(sys.stdin.readline())

for i in range(byte // 4):
    print('long', end=" ")
print('int')

이렇게 내야 한다. 위 코드는 end가 없어서 줄바꿈이 돼서 나오고 end=” “까지 넣어줘야 줄바꿈 없이 공백 하나 두고 나온다. 이거 맞냐고? 예. 그럼 while은 어떻게 하냐고?

import sys 
byte = int(sys.stdin.readline())

i = 0
while i < (byte // 4):
    print('long', end=" ")
    i += 1
print('int')

while은 조건부 반복문이니까 조건을 지정해줘야죠. 그래서 저거 다 맞았냐고?