- 요소의 개수가 100만개여서 루프를 여러번 돌면서 검사하면 시간초과가 날 것 같았음.

- 따라서 요소를 스택에 넣어두고, 검사하는 요소와 스택의 맨 위 요소가 같다면 스택에서 빼주는 방식으로 구현

- 마지막에 stack이 비어있다면 제거 가능한 문자열이다.

from collections import deque
def solution(s):
    stack = deque()

    for c in s:
        if len(stack) == 0:
            stack.append(c)
        else:
            if stack[-1] == c:
                stack.pop()
            else:
                stack.append(c)

    answer = 0 if stack else 1
    return answer

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

'알고리즘[Python] > 프로그래머스' 카테고리의 다른 글

[ Lv 2 ] 오픈채팅방  (0) 2021.06.21
[Lv 2] 멀쩡한 사각형  (0) 2021.06.20
[Lv 2] 124 나라의 숫자  (0) 2021.06.20
[Lv 1] 이상한 문자 만들기  (0) 2021.06.19
[Lv 1] 소수 찾기  (0) 2021.06.19

- 어떻게 0이 나오는지 고민하다가 너무 오랜 시간이 걸려서 다른 사람의 자료를 참고함.

- 3진법과 거의 유사하나 나누어 떨어지는 경우(0이 나오는 경우) 나오는 몫을 하나 빼고 나머지를 4로 채우는 방식으로 진행하면 해결 가능

def convert_four(n):
    s = ''
    idx = 0
    while n != 0: 
        remainder = n % 3
        q = n // 3
        if n % 3 == 0:
            remainder = 4
            q = q - 1
        s = str(remainder) + s
        n = q

    return s

def solution(n):
    answer = ''
    k = convert_four(n)
    answer = k
    return answer

 

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

'알고리즘[Python] > 프로그래머스' 카테고리의 다른 글

[ Lv 2 ] 오픈채팅방  (0) 2021.06.21
[Lv 2] 멀쩡한 사각형  (0) 2021.06.20
[Lv 2] 짝지어 제거하기  (0) 2021.06.20
[Lv 1] 이상한 문자 만들기  (0) 2021.06.19
[Lv 1] 소수 찾기  (0) 2021.06.19

- 문제를 잘 읽어야 하는 문제. 공백이 한개일수도 있고 여러개일 수도 있어서 split 함수를 사용하여서는 안됨.

- 앞에서 순차적으로 진행하면서 문자를 만났을 때는 대/소문자 변환과정, 공백을 만났을 경우에는 그대로 출력하도록 소스코드 작성

def solution(s):
    answer = ''
    count = 0
    for c in s:
        if c == " ":
            count = 0
            answer += c
        else:
            if count % 2 == 0:
                answer += c.upper()
            else:
                answer += c.lower()
            count += 1

    return answer

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

'알고리즘[Python] > 프로그래머스' 카테고리의 다른 글

[ Lv 2 ] 오픈채팅방  (0) 2021.06.21
[Lv 2] 멀쩡한 사각형  (0) 2021.06.20
[Lv 2] 짝지어 제거하기  (0) 2021.06.20
[Lv 2] 124 나라의 숫자  (0) 2021.06.20
[Lv 1] 소수 찾기  (0) 2021.06.19

- 최대한 효율적으로 구성하고자 에라토스테네스의 체 활용

- 2~n의 제곱근까지의 수에 대하여, 각각의 수들을 2,3,4,5,6,...배 해 나가면서 소수가 아니다.. 라고 체크해주는 방식. 문제에서는 최대 1000000까지 이므로 1000000의 제곱근까지

- 이후 소수의 개수를 구해주면 끝


import math
def solution(n):
    odd = [True] * 1000001
    odd[1] = False
    odd[0] = False
    for i in range(2, int(math.sqrt(1000000))+1):
        if odd[i] == False:
            continue
        for j in range(i*2, 1000001, i): # 배수들 검사
            odd[j] = False

    answer = 0
    for i in range(1, n+1):
        if odd[i] == True:
            answer += 1

    return answer

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

'알고리즘[Python] > 프로그래머스' 카테고리의 다른 글

[ Lv 2 ] 오픈채팅방  (0) 2021.06.21
[Lv 2] 멀쩡한 사각형  (0) 2021.06.20
[Lv 2] 짝지어 제거하기  (0) 2021.06.20
[Lv 2] 124 나라의 숫자  (0) 2021.06.20
[Lv 1] 이상한 문자 만들기  (0) 2021.06.19

+ Recent posts