일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 얼음여왕
- 벚꽃개화시기
- Google Analytics
- 수명예측 인공지능
- 벚꽃
- 독서
- 기사스크랩
- Python
- 구글애널리틱스
- 코오롱베네트
- 티스토리
- 데이터 분석
- 구글애널리틱스4
- GA4
- 영화 올드 줄거리
- 6시 기상
- 니다
- 채용공고
- 감사인사
- 알파줄거리
- ㅂㅂ
- 데이터문해력
- 프로그래머스
- GA
- 미라클 모닝
- 명상
- 코딩
Archives
- Today
- Total
Data Analyst KIM
[Coding Club] 23.07.14 본문
반응형
[Coding Club] 23.07.14
1. 다트 게임
<문제 접근 방식>
나 : 두개의 리스트를 만들어서 처리
순범 : 한개의 리스트만 만들고 기존의 dartResult에 마지막을 공백을 추가
내 코드가 돌아가긴 하지만 마지막에 공백처리를 하는 것이 맞다고 생각한다.
그리고 굳이 두개의 리스트를 만들지 않고도 작업이 가능하다는 것을 알게됨
# 내 코드
def solution(dartResult):
answer = []
score = []
list_dart = list(dartResult)
for i in range(len(list_dart)):
if list_dart[i] == "1" and list_dart[i+1] =="0" :
score.append('10')
elif list_dart[i] == "0" and list_dart[i-1] =="1" :
pass
else :
score.append(list_dart[i])
for i in range(1,len(score)):
if score[i] == 'S' :
answer.append(int(score[i-1]))
elif score[i] == 'D' :
answer.append(int(score[i-1])**2)
elif score[i] == 'T' :
answer.append(int(score[i-1])**3)
elif score[i] == '*' :
if len(answer) >= 2:
answer[-1] *= 2
answer[-2] *= 2
else :
answer[-1] *= 2
elif score[i] == '#' :
answer[-1] *= -1
return sum(answer)
# 순범코드
def solution(dartResult):
dartResult += " "
score=[]
for i in range(len(dartResult)-1):
if (dartResult[i].isdigit()) & (dartResult[i+1].isdigit()):
score.append(10)
elif (dartResult[i].isdigit()) & (dartResult[i-1].isdigit()) :
pass
elif dartResult[i].isdigit():
score.append(int(dartResult[i]))
elif dartResult[i]=='D':
score[-1] = score[-1]**2
elif dartResult[i]=="T":
score[-1] = score[-1]**3
elif dartResult[i]=="*":
if len(score) != 1:
score[-2] = score[-2]*2
score[-1] = score[-1]*2
else:
score[-1] = score[-1]*2
elif dartResult[i]=="#":
score[-1] = score[-1] * (-1)
return sum(score)
2. 덧칠하기
<문제 접근 방식>
나 : 왼쪽에서부터 덧칠을 해서 덧칠된 구간과 안된 구간을 조건문을 이용해서 접근
순범 : while와 for를 이용하여 조건에 해당이 되면 제거를 하는 방식
while와 for와 if를 동시에 사용했을 때 문제점은 시간 초과가 되는 문제가 많아서 제출이 안된다.
왜냐면 n,m이 커질수록 조건을 계산하는 시간이 길어지기 때문에 비효율적인 코드라고 생각할 수 있다.
하지만 순범이의 코드에서 배울점은 비교를 해서 첫번째의 인덱스를 제거해나가는 방식으로 풀었고
내가 한번도 고려를 하지 않는 문제 해결방안이라서 배울점이 있었다!!
# 내 코드
def solution(n, m, section):
answer = 0
paint = 0 # 현재까지 페인팅이 된 번호
for i in section :
if i > paint :
paint = i + m -1
answer += 1
return answer
# 순범 코드
def solution(n, m, section):
num=0
while len(section) >0:
num+=1
for i in range(section[0],section[0]+m):
if i in section:
section.remove(i)
return num
<문제 풀어보기>
반응형
'일상 > Coding Club' 카테고리의 다른 글
[코딩 동아리] 23.08.11 (0) | 2023.08.15 |
---|---|
[Coding Club] 23.07.21(프로그래머스-과일 장수) (0) | 2023.07.23 |
[Coding Club] 23.07.07 (0) | 2023.07.07 |
[Coding Club] 23.06.30 (0) | 2023.06.30 |
[Coding Club] 2023.06.22 - 프로그래머스Lv.1 문제 풀이(크기가작은부분문자열,신규아이디추천) (0) | 2023.06.22 |