Data Analyst KIM

[Coding Club] 23.07.14 본문

일상/Coding Club

[Coding Club] 23.07.14

김두연 2023. 7. 15. 20:29
반응형

[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

<문제 풀어보기>

 

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

반응형