반응형
반응형

 

문제

괄호 회전하기 문제는 처음에 이해하기 어려웠습니다.

이 문제에서 중요한건 문자열만큼 for문을 돌리는 것, for ... else ... 사용해서 answer 값 증가 또는 유지 하는 것입니다.

 

 

자세한 내용!

 

코드

1. 스택

from collections import deque

def solution(s):
    answer = 0
    s = deque(s)
    
    for i in range(len(s)):
        s.rotate(-1)
        stack = []
        for ch in s:
            if ch == '(' or ch == '{' or ch == '[':
                stack.append(ch)
            else:
                if not stack:
                    break

                rear = stack.pop()
                if ch == ')' and rear != '(':
                    break
                elif ch == '}' and rear != '{':
                    break
                elif ch == ']' and rear != '[':
                    break
        
        else:
            if len(stack) == 0:
                answer += 1

    return answer

 

 

 

공부

- deque

- for ... else ...

 

반응형
반응형
반응형

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

 

프로그래머스

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

programmers.co.kr

 

문제

문자열로 된 숫자에서 최소값과 최대값을 구한 후 문자열로 return.

(자세한 내용은 상단 프로그래머스 사이트에서 확인!)

 

시도

1. split(" ") 사용하여 문자열 값을 나눕니다.

2. map()을 통해 문자열을 정수 값으로 변경합니다.

3. map()을 사용 후 min()과 max() 사용하여 return 할려고 했지만 에러가 발생했습니다.

* ValueError: max() arg is an empty sequence

4.map()을 값을 다시 list() 함수를 사용하여 리스트 형태로 만들어 준 후 min()과 max() 값을 사용하여 결과 값을 return 했습니다.

 

알아야할 것

- split()

- map()

- list()

 

정답

def solution(x):
    arr = list(map(int, x.split()))
    return str(min(arr)) + " " + str(max(arr))
반응형
반응형
반응형

 

상황

max()와 min() 함수를 사용하다 ValueError: max() arg is an empty sequence 에러 메세지가 떳습니다.

더 다세하게는 아래 코드를 확인해주세요~

def solution(x):
    arr = map(int, x.split())
    return str(min(arr)) + " " + str(max(arr))

 

arr의 type을 확인한 결과 <class 'map'>인걸 확인헀습니다.

그리고 min() 또는 max()를 사용 후 arr안에 있는 값을 꺼낼 수 없다는 것을 확인했습니다.

 

해결

- map()을 list()로 감싸서 list 형태로 만듭니다.

 

 

반응형

'Python' 카테고리의 다른 글

zip()  (0) 2023.05.03
combinations()  (0) 2023.05.03
[panda]info()  (0) 2023.04.26
cannot import name 'fl_score' from 'sklearn.metrics'  (0) 2023.04.26
IndentationError: unindent does not match any outer indentation level  (0) 2023.04.25
반응형
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/181188?language=python3 

 

프로그래머스

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

programmers.co.kr

 

 

문제

폭격 미상일을 요격할 때, 최소한으로 요격 미사일 수를 구해서 return 합니다.

(자세한 내용은 상단 프로그래머스 사이트에서 확인!)

 

주의사항

1. 단, 개구간로 표현되는 폭격 미사일은 s와 e에서 발사하는 요격 미사일로는 요격할 수 없습니다.

 

시도

1. defense 값 설정합니다.

2. sort()를 사용합니다.

* sort() 함수에서 reverse=True로 설정해도 시간이 느려지지 않습니다.

3. 배열의 [1] 값과 defense 값을 비교한 후 만약 defense 값이 크면 defense 값을 배열[0]의 값과 0.5를 더해 defense 값을 수정해줍니다.

* 0.5를 더한 이유는 s, e 구간에서는 요격할 수 없기 때문입니다.

 

알아야할 것

- sort(): 파이썬 정렬 함수입니다

 

정답

def solution(targets):
    answer, defense = 0, 100000001
    
    for s, e in sorted(targets, reverse=True):
        if e <= defense:
            defense = s + .5
            answer += 1

    return answer

걸린 시간: 4.291534423828125e-06

반응형

+ Recent posts