본문 바로가기
코딩 오늘

2023.04.19

by 마동휘 2023. 4. 20.

장고심화강의를 학습하는 기간이지만 한시간 정도 해서

페어프로그래밍을 하기로 했다 팀 프로젝트 기간동안 미뤄두어서 오랜만이다

 

각자 문제를 골라 시도해보는 걸로 했는데 

이래선 페어프로그래밍이 아니지만

문제에라도 익숙해져보자는 취지로 진행했다

1시간정도 문제를 풀어보고 풀이를 하기로 했다

어떤문제를 풀지 사전에 말하지않았는데 팀원중 한명과 문제가 겹쳐서

같은 문제로 본인 만의 문제 풀이를 하게 되었다

나머지 팀원은 저번 페어프로그래밍 때 문제를 풀었는지 또 다른 풀이를 보여주었다

 

문제는 '중복된 문자 제거'

 

def solution(my_string):
    answer = ''
    check = list(set(my_string))
    for s in my_string:
        if s in check:
            check.pop(check.index(s))
            answer+= s
    return answer

 

이건 나의 풀이 인데 나의 것이라기보단 문제의 답안으로 제시된 것을

해설하는 과정을 거쳤다

set() 은 중복된 문자를 제거해주는 역할을 한다 여기선 [a, p, l, e]

(가령 input 이 apple 이라고 했을때 output은 aple 이 도출되야 한다)

이 과정에서 나오는 값은 무작위가 되지만 아래에서 이뤄질 과정에서 set()을 거치고 list화 한 check의 순서는 상관이없다

check 에서 s, 한 원소씩 비교를 하는데 input 값인 my_string,이어서 apple

처음은 check.pop(a) 가 될 것이다 a를 없애고 a를 answer에 추가한다 다음은 check.pop(p), check에서 p를 없애고 p를 answer에 추가한다나머지 l,e 도 하고나면 완성된 문자열 "aple"가 나온다

 

set()의 용도를 보았을 때 그렇다면 아래의 과정은 필요치않는 것이 아닌가 생각했는데따로 사용하고 보니 나오는 값이 무작위고 합쳐진 문자열이 아닌 원소 한개씩 도출되기 때문에그것을 온전한 문자열로 만들어 주기 위한 과정이 었다.

pop의 개념이 아직 불확실해서 석연치않은 부분이 있지만 이건 더 찾아보면서 확립해야할 것 같다

아래는 팀원들의 풀이이다

def solution(my_string):
    answer = ''
    for char in my_string:
        if char not in answer:
            answer += char

    return answer

제시된 input 값이 들어갔을 때 없다면 추가 있다면 넘어가는 함수이다

def solution(my_string):
    answer = ''.join(dict.fromkeys(my_string))
    return answer

 

문제의 상황에 적합한 함수이다 

'코딩 오늘' 카테고리의 다른 글

2023.04.21  (0) 2023.04.24
2023.04.20  (0) 2023.04.21
2023.04.18  (0) 2023.04.19
2023.04.17 발표  (0) 2023.04.17
2023.04.14  (0) 2023.04.17

댓글