백준 코딩테스트 파이썬 시작!

developer.do·2022년 11월 9일
0

백준

목록 보기
1/1

백준 코딩테스트 파이썬 01

알고리즘 강의를 듣다가, 도저히 이해가 안되서 기초부터 차근차근 풀어보기로 했다.
오늘부터 2~3문제씩 꼭 백준 코딩테스트 (파이썬)을 풀어보는 것을 시작했다.

  • 백준 파이썬 문제집으로 1~50 문제를 1달 내 마스터 하는게 목표이다.

01. Hello World!를 출력하시오. 2557

print('Hello World!)

-> 정말 코딩테스트가 위 문제처럼 나오면 얼마나 좋을까

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

첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)
첫째 줄에 A+B를 출력한다.

a,b = input().split()
print(int(a)+int(b))

-> input() 함수는 사용자로부터 문자열을 받을 때 사용한다.
int는 문자열을 숫자로 변환시켜준다.
split()함수는 입력받은 문자를 나누어준다.

03. 두 정수 A와 B를 입력받은 다음, A×B를 출력하는 프로그램을 작성하시오. 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10) 10998

  • a,b = input().split()
    print(int(a)*int(b))
  • a,b = map(int,input().split())
    print(a*b)

-> split( ) 함수 중, 괄호( ) 안에 아무것도 입력하지 않으면 공백을 기준으로 문자를 나눌 수 있다.
튜플 - 여러개의 변수를 지정할 때 좌변과 우변의 갯수가 같아야함
2번째 풀이법은, map 함수를 이용하여 int를 전체적으로 씌었다.

04. 두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오. 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10) 1001

  • a,b = map(int,input().split())
    print(a-b)
  • a,b = input().split()
    print(int(a)-int(b))

->input() 함수로 입력을 받게되면 숫자 -> 문자로 입력이 된다.
즉 2,1을 받는다면 두수가 '2 1'라는 문자로 입력이 된다.
따라서 split()을 사용하게되면 공백으 기준으로 문자를 나누게된다.
즉 이 두개의 문자는 튜플을 이용하여 왼쪽 A,B 두개를 지정하면 입력받은 문자가 두개로 나뉘는 변수를 선언하게 된다.

05. 두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오. 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10) 1008

  • a,b = input().split()
    print(int(a)/int(b))
  • a,b = map(int,input().split())
    print(a/b)

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

A,B = map(int,input().split())
print(A+B, A-B, A*B, A//B, A&B, sep='\n')

-> 위 값을 출력하게되면 값이 세로로 각각 하나씩 나온다.
고로 sep = 파라미터를 이용하자
sep파라미터는 print 함수에서 쉼표로 구분된 각각의 출력 값 사이에 문자열을 삽입할 수 있다
이러한 성질을 이용해서 이스케이프 문자인 줄 바꿈 문자 '\n'를 출력 값 사이에 삽입하였다

07. (A+B)%C는 ((A%C) + (B%C))%C 와 같을까? (A×B)%C는 ((A%C) × (B%C))%C 와 같을까? 10430

세 수 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( (ab)%c )
    print( ((a&c)
    (b*c)) &c )

  • a,b,c = map(int,input().split())
    print((A+B)%C, ((A%C)+(B%C))%C, (AB)%C, ((A%C)(B%C))%C, sep='\n')
    #sep='\n'로 줄바꿈

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

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

-> 우선 a를 정수로 만들려면 int(문자->숫자)를 이용해야한다.
여기서 input() 값은 불러온 것을 뜻하는데, input(예를들어 index.html)에서 불러온 값을 int를 통해 문자->숫자로 만드는 방식이다.

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

a = int(input())
b = input()
a1 = a*int(b[2])
a2 = a*int(b[1])
a3 = a*int(b[0])
a4 = a*int(b)
print(a1,a2,a3,a4, sep="\n")

-> 숫자를 입력 받을 때마다, 변수에 지정을 하였으며 input 함수는 사용자가 숫자를 입력하면 문자로 받게된다. 따라서 int를 이용하여 문자에서 숫자로 바꾼다.
다만, b의 경우는 문자열로 홀딩한다. 이유는 이 숫자를 한자리씩 떼어내기위함이다. b[0] 이런식으로..
다음 472에서 b의 1자리씩 곱한값을 변수에 넣어주면 됨
그리고 마지막으로 세로로 출력하기 위해서 sep='\n'만 추가하면 끝

지금까지 백준 파이썬 문제집의 1번부터9번까지의 문제를 풀어봤다. 아무래도 처음 접해보다보니 무슨말인지 몰라서 계속 반복을 해보고 여러 풀이도 찾아봤는데, 어느정도 슬슬 감이 오는 것 같다. 나머지 41문제도 차근차근 풀어봐야겠다.

2개의 댓글

comment-user-thumbnail
2022년 11월 10일

백준, 프로그래머스등 지금처럼 하루에 2~3문제씩 풀어보시며 정말 도움 많이되실거에요!

1개의 답글