본문 바로가기
알고리즘 풀이

[TIL] 오늘의 백준 풀이

by 째깍단 2023. 3. 24.

앞으로는 예제 하나씩 풀어가면서

하루에 한 개 이상의 함수를 분석하고 이해하여 사용하고자 한다.

단, 내 마음대로 작성하지 않기!

     1시간 이상 한 가지로 고민하지 않기!

 

오늘은 어제 팀원분들과 고민했던 a+b 문제와 매우 유사해보이는 a*b, a/b문제를 풀이했다.

 

 

예제 : backjoon 10998, 1008

풀이 : 나누기는 *를 /로 변경

a, b = map(int,input().split())

if a > 0 and b < 10:
    result = a * b
    print(result)

 

과정

매니저님이 푸셨다는 한 줄 풀이 방법이 너무 멋있어서 써보고싶었다. 

풀이에 사용하셨다던 map()을 사용해보기 위해 map()함수에 대해 공부했다.

 

map(function, iterable)

매개변수란 함수의 입력값을 받는 변수이며,

매개변수1 = 함수

매개변수2 = 반복가능한 자료형

 

반복가능한 자료형2를 1에 집어넣어 함수를 수행

 

시도1.

이렇게 어려운 말로 첫 공부를 하고 처음 작성한 코드.

map(a * b, int(input()).split())  #이게 무슨 혼종..

map의 function이 함수라는 건 홀랑 잊고 매개변수2를 1에 넣어 수행한다는 것에만 꽂혀서

결과값으로 받아야하는 a * b를 넣었다.

  -> a, b는 변수나 상수이기때문에 넣으면 false값이 뜨며 에러가 난다고한다.

 

그리고 이전 문제를 풀며 배운, 'input에 입력한 것은 문자열'을 적용하여 int로 감싸고자 했다.

  -> .split은 문자열을 나누는 코드기 때문에 나누어질리가 없다.

 

어찌되었든 가장 큰 문제는 map에 대한 이해가 부족했다..

 

 

시도2.

그래서 다시 map(), input()을 쉬운 말로 공부했다.

 

map은 여러 개의 값을 지정받고, 지정받은 값을 함수에 넣어 각각 변환해준다.

 map(값을 적용할 함수, 값 ~여러 개)

 

함수란 def 으로 정의할 수도 있고 python에 내장되어있는 여러 함수 코드들이 있다.

내장된 함수에는 대표적으로 int, str, import, print 등 그동안 예제문에서 많이 접했던 코드들이 있었다.

 

값에는 '반복 가능한', 그러니까 리스트처럼 여러 개의 요소를 가지는 것이 들어갈 수 있다. 생각해보니 for문같은 느낌이네

이러한 객체를 iterable이라고 한다. 반복가능한 객체.. ㅋㅋㅋㅋ

list, tuple, string, set(집합), dict 등이 이에 해당한다.

 

 

그리고 내가 사용하려는 input은 입력받는 함수로, 호출하면 사용자가 값을 직접 입력할 수 있게 해준다.

input의 결과물은 str, 문자열이기 때문에 숫자를 계산하고 싶은 경우, 실수인 float나 정수인 int로 변환하여 사용하여야한다.

 

a = int(input(  )) 에서

input을 호출하여 안에 숫자 1을 입력하면

  > 1은 "1"인 상태로 int("1") 안에 들어가고,

    > int가 "1"을 1로 바꾸어주어 a에 정수 1이 저장!

 

 

함수 이해 후 다시 코드를 작성했다.

a, b = map(int,input().split())

input에 2개의 숫자를 입력하면 "1 2", 이후 split이 "1"과 "2"로 나누어주고

int가 적용되어 숫자 1과 2로 변환, 각각 a, b에 저장된다.

 

그 다음 조건인 a > 0, b < 10 을 넣기 위해 if문에 and를 사용하였고,

a * b를 result 변수에 넣어 출력....

완성.....ㅠㅠ

 

 

 

느낀 점 :

아직 모르는게 너무 많다. 기초가 너무너무너무너무 부족하다..

심심할때마다 놀지말고 python 함수문서를 읽어야겠다...

 

한줄 풀이는 좀더 실력이 쌓이고 이 글에 돌아와서 다시 작성해야지!

 

그리고 자꾸 이해가 부족하면 내 마음대로 코드를 작성하려고 한다.

일명 때려맞히기가 자꾸 발동되는데, 제~~~발 확실하게 이해한 다음에 작성하자..!! 제발~!!!