[Baekjoon] 2023/2/21

장세민·2023년 2월 21일
0

BaekJoon

목록 보기
1/6
post-thumbnail

10807번

내가 문제를 풀려고 생각한 알고리즘은 다음과 같다.

  1. 정수의 개수 입력
  2. 리스트에 N개의 요소 입력
  3. 찾으려는 정수 입력
  4. 개수 출력

문제에서 요구한 조건에 따라
정수 사이 공백으로 구분하여 리스트에 값을 저장해야 하므로
split 함수 map 함수를 이용하여 작성했다.

  1. n = int(input('정수 개수 입력: '))
  2. number = list(map(int, input().split()))
  3. count = number.count(int(input('찾으려는 정수 입력: ')))
  4. print('찾으려는 정수의 개수는 %d개입니다.' % count)



10871번

생각한 알고리즘은 다음과 같다.

  1. 정수 N과 X를 리스트에 요소로 입력
  2. 수열 A를 리스트에 요소로 입력
  3. 수열 A 리스트 각 요소를 X와 비교
  4. X보다 작다면 해당 요소 출력
  1. n = list(map(int, input().split()))
  2. num = list(map(int, input().split()))
  3. for i in num:
  4. if i < n[1]:
  5. print(i, end=' ')
  6. print()

출력 값이 줄바꿈이 아닌 공백을 간격으로 출력하고 싶으면 다음처럼 작성하자!

print(, end=' ')

10818번

문제를 풀기 위해 생각한 알고리즘은 다음과 같다.

  1. 정수의 개수 N 입력
  2. N개의 정수를 각각 리스트의 요소로 저장
  3. 파이썬 내장함수 max함수와 min함수를 이용하여 최대, 최소값 출력
  1. n = int(input())
  2. num = list(map(int, input().split()))
  3. print(min(num), end=' ')
  4. print(max(num))

오늘 새롭게 알게 된 내용

그동안 입력(input) 개념을 완전히 이해하지 못해서
정수를 리스트에 입력, 띄어쓰기로 구분하여 여러 개 숫자 입력,
엔터로 구분하여 여러 개의 문자 입력을 자주 헷갈렸지만 오늘 완전히 잡고 간다.

  • 띄어쓰기로 구분된 여러 개의 숫자 입력
    s = list(map(int, input().split()))

다음처럼 map 함수와 split 함수를 이용하여 입력할 수 있다.

map 함수

map함수를 이해하기에 앞서서 객체 개념부터 알고 가자.
붕어빵을 예로 들어보면,

붕어빵 틀은 똑같은 붕어빵을 계속해서 만들어 낼 수 있는 클래스(class)이고,
붕어빵은 클래스로 만든 피조물 객체(object)를 뜻한다.

붕어빵 틀로 만들어 낸 붕어빵 중,
어떤 붕어빵은 약간 탔고, 어떤 붕어빵은 꺼내다 찢어졌다고 해보자.
탄 붕어빵과 찢어진 붕어빵은 다른 붕어빵에 영향을 주진 않는다.

즉, 동일한 클래스로 만든 객체들은 서로 전혀 영향을 주지 않는다.

클래스로 만든 객체를 인스턴스라고도 하는데,
a = Cookie() 이렇게 만든 a는 객체이고, a 객체는 Cookie의 인스턴스이다.
인스턴스라는 말은 특정 객체가 어떤 클래스의 객체인지 설명할 때 사용한다.

이제 map함수를 알아보면,

map(function, iterable)

함수와 반복 가능한(iterable) 자료형을 입력으로 받고,
입력 받은 자료형의 각 요소를 함수가 수행한 결과를 묶어서 돌려주는 함수이다.

map 함수를 이용하면

# 리스트에 값을 곱해서 새로운 리스트를 만드는 작업
lst = [1, 2, 3, 4, 5]
 
# for 반복문 이용
res1 = []
for i in lst:
    res1.append(i * 2)
 
print(f'res1 : {res1}')
 
# map 함수 이용
def mul(n):
    return n * 2
 
res2 = list(map(mul, lst)) # map반환을 list로 변환
print(f'res2 : {res2}')

예시처럼 for 반복문을 이용하여 일일이 리스트 요소에 접근하고, append 해줘야 하는 번거로움을
map 함수는 요소에 적용할 함수만 넘겨준다면, 알아서 리스트에 함수를 적용해서
map 객체를 반환해준다. 그 map 객체를 list로 형 변환해서 사용하면 끝~

자주 사용하는 함수니까 꼭 연습하자.



  • 엔터로 구분된 여러 개의 문자 입력
    for i in range(n):
        list.append(int(input()))

for문을 사용하여 iterable 객체가 바뀔때마다 append 함수로 입력하면 된다.

profile
분석하는 남자 💻

0개의 댓글