[백준 알고리즘] 1단계 : 입출력과 사칙연산 (1번~13번)

chxxrin·2022년 5월 18일
0

백준 알고리즘

목록 보기
1/2

1단계 (문제번호 : 2557) Hello World

Hello World!를 출력하시오.

print("Hello World!")

2단계 (문제번호 : 10718) We love kriii

두 줄에 걸쳐 "강한친구 대한육군"을 한 줄에 한 번씩 출력한다.

for i in range(2):
	print("강한친구 대한육군")
  • print("강한친구 대한육군")을 연달아 2번 입력해서 출력을 할 수도 있지만, 최대한 간결한 코드를 작성하기 위해 반복되는 코드는 for문을 이용하였다!
  • for i in range(2) : for문을 이용해 아래의 코드를 2번 반복시켰다

3단계 (문제번호 : 10171) 고양이

고양이를 출력한다.

print('''\\    /\\''')
print(''' )  ( ')''')
print('''(  /  )''')
print(''' \\(__)|''')
  • 한 번에 출력하고 싶으면
print("""\\    /\\
 )  ( ')
(  /  )
 \\(__)|""")

"""을 써서 한 번에 출력하면 된다. 단, 이 때 처음 """하고 한 줄을 띄고 입력하면 안되고 """이후에 그 줄에 바로 작성을 해야 한다!

  • 백슬래시(\)가 제대로 나오게 하기 위해서는 백슬래시를 두 번 작성해주어야 한다!!
  • 줄바꿈은 이스케이프문자 중 \n을 써주면 된다

4단계 (문제번호 : 25083번) 새싹

아래 예제와 같이 새싹을 출력하시오.

print('         ,r\'\"7')
print('r`-_   ,\'  ,/')
print(' \. \". L_r\'')
print('   `~\/')
print('      |')
print('      |')
  • print문 안에서 작은따옴표(')와 큰따옴표(")를 제대로 출력하는 것이 포인트이다.
  • print문에서 문자열을 작성할 때는 반드시 따옴표를 사용해야하는데, 이 안에서 또 따옴표를 사용한다면 그 때는 따옴표 앞에 백슬래시(\)를 하나 넣어주어야 한다!!

5단계 (문제번호 : 1000) A+B

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

a, b = input().split()
print(int(a) + int(b))
  • input() : 사용자로부터 문자열을 입력받는 함수. input으로 입력받은 것은 '문자열(string)' 형식이므로 이를 숫자로 바꿔주려면 int()함수를 써줘야 한다!
  • int() : string을 int형의 숫자로 바꿔주는 함수
  • split() : input()함수에서 입력받은 문자열을 '공백'을 기준으로 나눠주는 함수
a, b = map(int, input().split())
  • 또 다른 방법으로는 map()함수를 이용해 한 줄로 작성해주는 방법이 있다.
  • map() : 한 줄로 문자열을 입력받아서 string을 int형의 숫자로 변환해주는 함수. 콤마(,)를 사용해 함수를 작성해줄 수 있다.

6단계 (문제번호 : 1001) A-B

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

a, b = input().split()
print(int(a) - int(b))
  • 5단계와 사용한 함수는 완전히 동일하고, print문에서 출력할 때 사칙연산 중 빼기를 사용하였다.

7단계 (문제번호 : 10998) AxB

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

a, b = input().split()
print(int(a) * int(b))
  • 5,6단계와 사용한 함수는 완전히 동일하고, print문에서 출력할 때 사칙연산 중 곱셈을 사용하였다. 이 때, 곱할 때는 x가 아니라 *을 사용해주어야 한다!

8단계 (문제번호 : 1008) A/B

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

a, b = input().split()
print(int(a) / int(b))
  • 5,6,7단계와 사용한 함수는 완전히 동일하고, print문에서 출력할 때 사칙연산 중 나눗셈을 사용하였다. 이 때, 나눌 때는 나누기 기호가 아니라 /을 사용해주어야 한다!

9단계 (문제번호 : 10869) 사칙연산

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

a,b = input().split()
print(int(a) + int(b))
print(int(a) - int(b))
print(int(a) * int(b))
print(int(a) // int(b))
print(int(a) % int(b))
  • 덧셈 : +
  • 뺄셈 : -
  • 곱셈 : *
  • 나눗셈(값) : /
  • 나눗셈(몫) : //
  • 나눗셈(나머지) : %

몫을 구하라는 것을 그냥 나눗셈의 값으로 생각해버려서 틀려버렸다.. 은근 이거 헷갈린다ㅠㅠ

10단계 (문제번호 : 10926) ??!

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

print(input()+"??!")
  • 처음에 보고 잘 이해가 안됐는데, python은 문자열을 더할 수 있다!!! input을 넣고 + 해서 문자열을 넣으면 빠밤 된다ㅠㅠ 파이썬 천재야

11단계 (문제번호 : 18108) 1998년생인 내가 태국에서는 2541년생?!

ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다. 불교 국가인 태국은 불멸기원(佛滅紀元), 즉 석가모니가 열반한 해를 기준으로 연도를 세는 불기를 사용한다. 반면, 우리나라는 서기 연도를 사용하고 있다. 불기 연도가 주어질 때 이를 서기 연도로 바꿔 주는 프로그램을 작성하시오.

print(int(input()) - 543)
  • 이것도 단순 입출력 문제이다!! 다만 input()에서 입력된 값은 문자열이기 때문에 숫자를 얻으려면 int()함수를 통해 숫자로 변환해주어야 한다. 그래서 int(input())을 하면 그 안에 값을 넣었을 때 문자열 -> int형 숫자로 변환이 된다!

12단계 (문제번호 : 10430) 나머지

(A+B)%C는 ((A%C) + (B%C))%C 와 같을까?
(A×B)%C는 ((A%C) × (B%C))%C 와 같을까?
세 수 A, B, C가 주어졌을 때, 위의 네 가지 값을 구하는 프로그램을 작성하시오.

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)
  • 이번에는 사칙연산이 너무 복잡해서 print문에 하나하나씩 int()를 하지 않고, 아예 처음부터 변수를 map()함수를 이용해 int형으로 만들어 주었다.
  • map() : 한 줄로 문자열을 입력받아서 string을 int형의 숫자로 변환해주는 함수. 콤마(,)를 사용해 함수를 작성해줄 수 있다.

13단계 (문제번호 : 2588) 곱셈

(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.
(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.

a = int(input())
b = input()
axb2 = a * int(b[2])
axb1 = a * int(b[1])
axb0 = a * int(b[0])
axb = a*int(b)
print(axb2, axb1, axb0, axb, sep="\n")
  • 13단계는 조금 어려웠다... 우선 a와 b를 입력을 받는데 이 때, 세 자리수 곱셈 하는 경우를 생각해보자. 첫 번째 입력되는 숫자 전체와 두 번째 입력되는 숫자의 일의 자리, 십의 자리, 백의 자리의 순서로 곱해진다. 그러기 때문에 첫 번째 입력되는 숫자인 a는 int() 함수를 이용해 정수로 변환해 주었지만, 두 번째 입력받은 숫자인 b는 int()로 변환해주지 않고, 문자열로 남겨두었다. 그 이유는 문자열의 리스트를 사용하기 위해!!
  • 문자열의 리스트를 사용해서 일의자리는 int(b[2]), 십의자리는 int(b[1]), 백의자리는 int(b[0])으로 변환해서 a와 곱한 다음 각각의 변수에 담아주었다. 그리고 마지막 (6)번에는 a와 b를 곱한 값을 출력해주어야 하기 때문에 a*int(b)를 해주었다.
  • sep 파라미터 : print()함수에서 출력할 값이 여러개일경우 각각의 값 사이사이에 삽입할 문자를 지정해주는 파라미터이다.
  • sep="\n"은 각각 (3), (4), (5), (6)에 들어갈 값을 하나씩 적어주어야 하므로 이를 이용해 각각의 값들이 줄 넘김을 할 수 있도록 해주었다.

오늘부터 백준 알고리즘 천천히 공부해보자..
생각보다 나는 아는게 많이 없던 것이었다.....

0개의 댓글