[백준/python] 10807 개수 세기

joseon0thing·2023년 7월 31일
0

python

목록 보기
5/17
post-thumbnail


#N개 입력
#입력
#V입력
n = int(input("입력할 개수: "))
arr = int(input().split())

v = int(input("찾을 수: "))

#n번만큼 돌림
#i 인덱스 값 == v 면, count +1

for i in range(1,n):
    arr[i] == v
    count += 1
    
print(count)

첫 번째 오류

런타임 에러

arr = int(input().split())

에서 error가 먼저 나는 거 같다.
리스트 형태로 입력이 되어야하는데 정수 변환까지만 함.

--> 입력받은 문자열을 분리한 후 정수로 변환하여 리스트에 저장하는 순

  1. input().split()
  2. int(input().split())
  3. list(input().split())

로 고쳐서 작성해봤다.


#N개 입력
#입력
#V입력
n = int(input("입력할 개수: "))
arr = list(int(input().split()))
v = int(input("찾을 수: "))

런타임 에러

--> 리스트로 입력받은 데이터를 형식에 맞게 변환하는 map( )을 써야 함.


#N개 입력
#입력
#V입력
n = int(input("입력할 개수: "))
arr = list(map(int, input().split()))
v = int(input("찾을 수: "))

map( )

map(형식, input().split())

: 여러 개가 입력되어 특정 함수를 적용시키고 싶을 때 사용

만약, list화 하지 않고 map에서 끝낸다면
a = map(int, input()) #입력받은 문자열을 정수로 바꿈
print(a)

해당 코드의 출력은 메모리 주소값이 출력

따라서, list화 시켜서 출력

<의문점>

입력받은 것을 자르고 int형으로 변환 (이 상태에선 들어있는 값 볼수 x) 따라서, list로 한 번 더 선언
  • 근데 그러면 list(int(input.split())) 랑 다를 게 뭐야?
    --> 여러개를 바꾸고 싶기 때문에 map함수를 사용

  • int(input.split())도 되는 거 아님?
    --> 리스트를 int형으로 바꿔줄 수 없기 때문에 error다.


두 번째 오류

런타임 에러

for i in range(1,n):
    arr[i] == v
    count += 1
    
print(count)

런타임 에러

--> count 함수를 선언해주고 범위를 n까지만 해보자


최종 코드

n = int(input())
arr = list(map(int, input().split()))
v = int(input())

count = 0 #count 사용을 위해 변수 선언
for i in range(n): #범위는 n까지
    if arr[i] == v:
        count += 1
    
print(count)

제대로 출력이 된다.

for i in range(n)

는 0부터 n-1까지.


다른 사람들 코드

n = int(input())
arr = list(map(int, input().split()))
v = int(input())

print(arr.count(v)) #v와 같은 문자 arr에서 찾기 (개수 )

count 함수를 사용해 더 간단히 나타냈다.

count( )

: 문자열에서 찾고 싶은 문자 개수를 찾을 수 있음.

찾아보다가 좋다고 생각한 참고글
profile
정리.velog

2개의 댓글

comment-user-thumbnail
2023년 7월 31일

좋은 글이네요. 공유해주셔서 감사합니다.

1개의 답글