본문으로 바로가기
728x90
반응형

목차

     

    무작위로 k개의 수 뽑기

    https://school.programmers.co.kr/learn/courses/30/lessons/181858

     

    프로그래머스

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

    programmers.co.kr

    def solution(arr, k):
        answer = []
        q = deque(arr)
        while q:
            item = q.popleft()
            if item not in answer:
                answer.append(item)
    
        if len(answer) > k:
            return answer[:k]
        else:
            pad = [-1 for _ in range(k - len(answer))]
            answer.extend(pad)
            return answer
    
    
    if __name__ == '__main__':
        print(solution([0, 1, 1, 2, 2, 3], 3))  # exp 0,1,2
        print(solution([0, 1, 1, 1, 1], 4))  # exp, 0,1,-1,-1
        print(solution([5, 4, 3, 2, 1], 3))  # exp, 5,4,3

    3번째 시도에 성공했다. 1번째 시도에서 정답에 근접한 풀이 방식을 꼬아서 생각하느라 2번째 시도에 set을 이용해 풀었는데 set은 문제에서 요구한 "순서"를 만족시키지 못하는 걸 깨달아 queue를 이용해 풀어냈다.

     

     

    문자 개수 세기

    https://school.programmers.co.kr/learn/courses/30/lessons/181902

     

    프로그래머스

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

    programmers.co.kr

    import string
    
    def solution(my_string):
        ascii_letters = string.ascii_uppercase + string.ascii_lowercase
        return [my_string.count(ch) for ch in ascii_letters]
    
    
    if __name__ == '__main__':
        print(solution("Programmers"))

    python으로 풀기에 간단한 문제다. 풀이자체가 쉬우니 설명은 생략

     

    코드처리하기

    https://school.programmers.co.kr/learn/courses/30/lessons/181932

     

    프로그래머스

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

    programmers.co.kr

    def solution(code):
        answer = []
        mode = '0'
        for idx, value in enumerate(code):
    
            if mode == '0':
                if value != '1' and idx % 2 == 0:
                    answer.append(value)
                if value == '1':
                    mode = '1'
                continue
    
            if mode == '1':
                if value != '1' and idx % 2 != 0:
                    answer.append(value)
                if value == '1':
                    mode = '0'
                continue
        if not answer:
            return "EMPTY"
    
        return ''.join(answer)

    요구하는 조건이 조금 복잡하지만 천천히 문제 지문대로 구현하다보니 풀렸다.

    728x90
    반응형