스파르타코딩 내일배움캠프 DAY 9 TIL

developer.do·2022년 11월 10일
0

스파르타코딩

목록 보기
2/2

백준 코딩테스트 파이썬 문제집을 시작하다.

알고리즘 강의를 듣다가, 도저히 이해가 안되서 다시 처음으로 돌아가서 기초부터 차근차근 풀어보기로 했습니다. 프로그래머스 0단계와 백준의 기초 문제들을 풀면서 감각? 같은 것을 익히고자 하루에 5문제 씩이라도 풀면 어떨가 하는 생각으로 시작을 하게 되었어요.

처음 특히 input(), split, int 등등 파이썬을 공부하면서 어디서 본 적이 있는 것 같은 함수들이 많이 나오더라구요.
특히 두 정수 A와 B를 받은다음 A+B를 출력하는 문제는, 정말 이해가 안가서 2시간동안 구글에서 찾아봤습니다.

결국은

  • input()을 통해 값을 불러오고,
  • split()의 경우 공백을 기준으로 문자를 나누고,
  • int는 문자에서 숫자로 바꿔주고
  • sep='\n'을 통해서 값을 세로로 출력하게하는 법까지
    문제를 풀면서 기본 개념을 익힌 것 같아서 정말 뿌듯하게되더라구요.

아직 map()함수의 개념이 조금 헷갈리긴 하다만, 이것도 매일매일 자료들을 찾아가면서 제 것으로 만드는 법을 익혀야 겠습니다.

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개의 댓글

comment-user-thumbnail
2022년 11월 11일

꾸준히 시간내서 알고리즘 풀어보면 많이 도움 되실거에요 ㅎㅎ

답글 달기