티스토리 뷰
요즘 매일 최소 한 문제는 푼다는 생각으로 백준에 있는 문제를 난도순으로 풀어보고 있다.
사실 매일 한 문제씩 푸는 시도는 방송대 입학하고 첫 1~2학기쯤에 C/Cpp을 처음 배우면서 벌써 해봤는데, 그땐 주제도 모르고 처음부터 구현 같은 거 해보려고 덤비다가 하루만에 그만뒀었다. 원래 하룻고양이(?)들이 뭐 무서운 줄 모른다고.
그러고 나서 리트코드나 백준 같은 사이트는 말만 들어도 무섭다고 도망다녔는데, 브론즈 레벨 문제로나마 점수를 채워서 실버 레벨에 겨우 도달하니 감회가 새롭다.
이게 중요한 게 아니고 다시 본론으로 돌아가자면 어쨌든 알고리즘 공부를 하고 있는데… 어제 백준 2789번을 풀다가 너무 어이없고 웃기는 일을 겪어서 근황 알림 겸 써본다.
백준 2789: 블랙잭 https://www.acmicpc.net/problem/2798
뭐 보시면 알겠지만 아주 간단한 완전탐색문제인데, 같은 실수를 하지 않으려고 적는 것이지 내 풀이나 코드를 올리려는 게 아니어서 그것에 대해선 쓰지 않을 생각이다.
어젯밤에 이걸 두시간 가까이 잡고 낑낑거리다가 에러의 이유를 도저히 몰라서 검색해보고 나서 엄청나게 허탈해졌다. 그리고 그렇게 삽질한 근본적인 원인은 처음부터 조건을 제대로 읽지 않았기 때문이다.
아래는 내가 어제 쓰다 말았던 코드의 일부이다. (앞부분은 생략했다)
if sum == M:
blackjack = M
break
else:
num_list.append(sum)
output = min([abs(M - i) for i in num_list])
if (M - output) in num_list:
blackjack = M-output
else:
blackjack = M+output
print(blackjack)
나 대체 뭐 한 거임?
애초부터 문제에서는 '합이 M을 넘지 않는' 경우만 구하면 된다고 친절하게 명시를 해주었다(그것도-빨갛게 체크한 부분처럼-두 번이나!). 그러니까 주어진 숫자가 500이고 세 장 합계로 구할 수 있는 수 중에 497이랑 501이 있을 때 후자를 출력할 방법을 고민해서 절댓값을 짜낼 이유가 없었던 것이다.
문제에 명시된 조건 좀 제대로 읽으라고 잔소리하던 강사가 훗날 문제의 조건을 제대로 읽지 않아서 귀중한 시간을 허공에 날리게 된다는 걸 예전의 내 학생들은 모르겠지. 얘들아, 보고 있니?
'공부 > Python' 카테고리의 다른 글
코칭스터디 8기: Data Science 부스터 선정 (0) | 2022.11.09 |
---|---|
PY4E 부스트코스 리드부스터 수료완료 :D (0) | 2022.08.31 |
네이버 부스트코스 '모두를 위한 파이썬' 스터디 참여! (1) | 2022.07.11 |
20210122 오늘공부: Numpy 기본함수 다루기 (0) | 2021.01.23 |
20210121 오늘공부: Numpy 기본함수 다루기 (0) | 2021.01.21 |
- Total
- Today
- Yesterday
- 데이터분석
- 빅분기
- 이자포스터디
- 이력서
- 깃허브
- 빅데이터
- 빅분기합격
- 데이터준전문가
- data annotation
- 개발자포트폴리오
- 빅분기후기
- googlecolab
- Notion2Tistory
- Til
- 데이터준전문가합격후기
- todayIlearned
- ADsP합격후기
- ADsP
- ai부트캠프
- github
- 데이터과학
- 코드스테이츠
- 코테공부
- 빅데이터분석기사
- 커리어코칭
- 자버
- 취업준비
- Kaggle
- 자격증
- 인공지능
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |