728x90
📌 문제
10807번: 개수 세기
첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거
www.acmicpc.net
📌 내 코드
# 10807 개수 세기
import sys
input = sys.stdin.readline
n = int(input())
li = list(map(int, input().split()))
v = int(input())
cnt = 0
for i in range(n):
if v == li[i]:
cnt += 1
print(cnt)
💡 풀이
- 입력 값에서 여러 숫자를 한 줄에 다 받는 걸 보고 리스트 자료형을 활용하고자 했다.
- 그래서 입력 받는 숫자 갯수 n, n개의 숫자를 담을 리스트 li, 찾고자 하는 수를 담을 v를 선언해준다.
- li 안에 있는 v와 일치하는 수의 갯수를 체크하기 위해 변수 cnt를 선언 후 0으로 초기화 해준다.
- for문을 n번 돌린다.
- 찾고자 하는 수 v와 반복할 때 리스트 li의 인덱스 값에 위치하는 수를 비교한다.
- 이 때, 일치하면 cnt에 +1을 해주어 v와 일치하는 수의 갯수를 체크한다.
- n번까지 for문을 다 돌고 나서 빠져나와 cnt를 출력해준다.
📌 정리
이제껏 단순 반복이었다면 이번에는 리스트 자료형을 활용해 입력되는 여러 값을 받아 담아주고, 리스트의 각 인덱스에 담긴 값을 리스트 안에서 찾고자 하는 수 v와의 일치 여부를 확인해 갯수를 체크 후 cnt에 담아 출력했다.
그런데 문제 채점 시간이 길었던 부분이 맘에 걸렸는데, 그 이유가 리스트 때문인건지, for문과 그 안의 if문 때문에 시간복잡도에 영향을 끼친 건지를 잘 모르겠다. 이 부분에 관해서는 더 찾아보고, 곧 1차원 배열 문제도 풀기 시작해야 하니 배열과 관련해 기초 개념을 복습해야겠다.
적극적인 피드백은 언제나 환영입니다:)