1. 코드 스니펫: 트리, 검색, 최단경로, 다익스트라등 미리 짜둔 흐름, 코드들을 만들어두자.
2. Cheat sheet를 준비하자
3. 유용한 라이브러리를 미리 정리해라 -> 효율적인 루핑 만들기
구글에 코딩 도장 검색하기
1번 워밍업 문제 (google)
1부터 10,000까지 8이라는 숫자가 총 몇번 나오는가?
8이 포함되어 있는 숫자의 갯수를 카운팅 하는 것이 아니라 8이라는 숫자를 모두 카운팅 해야 한다. (*예를 들어 8808은 3, 8888은 4로 카운팅 해야함
count = 0
res =[]
for i in range(100+1):
if '8' in str(i):
res.append(i)
# 틀림 : count += 1
count += str(i).count('8')
print(count) # 20
print(res) # [8, 18, 28, 38, 48, 58, 68, 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 98]
print(len(res)) # 19가 나오는 이유 '88'은 8이 2개로 카운트해야함
2번 워밍업 문제
1차원의 점들이 주어졌을 때, 그 중 가장 거리가 짧은 것의 쌍을 출력하는 함수를 작성하시오. (단, 점들의 배열은 모두 정렬되어 있다고 가정한다.)
예를 들어 S = [1,3,4,8,13,17,20]이 주어졌다면, 결과값은 (3,4)가 될 것이다.
s = [1,3,4,8,13,17,20]
m = max(s)
index = 0
for i in range(len(s)-1):
if m > s[i] - s[i+1]:
m = s[i] - s[i+1]
index = i
print(s[index], s[index+1])
## 다른 방법
s = [1,3,4,8,13,17,20]
ss = s[1:]
print(sorted(list(zip(s, ss)), key=lambda x: x[1]-x[0])[0])