본문 바로가기
CS/알고리즘

[이코테] 구현 - 시각 (feat. or에 대한 탐구)

by 데브겸 2023. 1. 26.

어제 답안까지 봤던 문제를 오늘 아침에 다시 풀어도 못 맞추는 건 무슨 빡대가리일까?

 

1. 내 풀이

n = int(input())
count = 0

for i in range(n):
    for j in range(60):
        for k in range(60):
            if '3' in str(i) or str(j) or str(k):
                count += 1
print(count)

 

2. 정답

n = int(input())
count = 0

for i in range(n+1):
    for j in range(60):
        for k in range(60):
            if '3' in str(i) + str(j) + str(k):
                count += 1
print(count)

 

3. 깨닫거나 다시 공부하게 된 점

- 처음 문제를 풀 때 3중 for문을 생각하긴 했으나, 시간 및 메모리 제한 때문에 그 방법을 포기했었다.

- 하지만 만약 데이터 수가 충분히 작다면 완전탐색 유형으로 생각해보는 것도 낫밷

- range()는 0부터 괄호 안에 들어가는 수 이전까지의 숫자들을 리턴한다. 

     - 왜 60은 잘만 넣었으면서 n+1은 생각 못한거니?

- 굳이 리스트로 묶지 않아도 + 연산자를 통해서 문자열을 하나로 붙일 수 있다. 기억하자...

- or 연산자에 대한 좀 더 깊은 이해

     - or은 논리 연산자! 즉, if '3' in str(i) or str(j) or str(k)는 'str(i)에 숫자 3이 있거나 또는 문자형이거나 문자형이니?'가 됨

     - 내가 원래 의도했던 대로 코드를 짜려면 if '3' in str(i) or '3' in str(j) or '3' in str(k)로 짰어야 함

     - 관련 설명 글 링크(https://arainablog.tistory.com/136)