얼음녹차의 블로그
article thumbnail

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/120888

 

프로그래머스

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

programmers.co.kr

 

처음 작성한 코드

  • 아스키 테이블을 매핑할 리스트를 생성
  • 리스트는 플래그 체크(문자의 사용 유무) 용도로 사용
  • 중복되지 않으면 빈 문자열에 더해가는 방식
def solution(my_string):
    asc_lst = [0]*128
    answer = ''
    for i in my_string:
        if asc_lst[ord(i)] == 0:
            answer += i
            asc_lst[ord(i)] = 1
    return answer

# 입출력 예시
print(solution("people"))
print(solution("We are the world"))

Verilog를 사용했던 습관인지 그냥 플래그 테이블을 만드는게 제일 편하게 느껴진다.

 

다른 코드

[코드1]

  • 리스트를 사용하는 대신 answer 문자열에서 사용되었는지 체크
def solution(my_string):
    answer = ''
    for i in my_string:
        if i not in answer:
            answer += i
    return answer

보편적으로 쓰이기는 어려운 코드라고 생각된다.

 

[코드2]

  • dict.fromkeys()함수를 이용
  • 각 문자들을 key로 등록하고 중복을 제거
  • join 함수를 이용하여 문자열로 합치기
def solution(my_string):
    return ''.join(dict.fromkeys(my_string))

 

profile

얼음녹차의 블로그

@PERIR

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!