https://school.programmers.co.kr/learn/courses/15008/lessons/121685
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
스택을 활용한 문제.
왜 스택을 써야하는지 납득이 힘들었지만
문제를 차차 이해해나가면서 받아드렸습니다.
1세대일 때는 Rr밖에 없으니 신경쓸 게 없습니다
문제는 2세대 이후부터입니다.
RR,rr을 만나면 크게 상관없겠지만
Rr인 지점을 만나면
계속 RR Rr Rr rr이 반복이 되기 때문에
이게 어디지점을 만나는지 계속 고려해야합니다.
3세대를 기준으로 보면
구간을 4개로 나누면
4로 나눴을 떄의 나머지가
0 1 2 3이 반복되는 게 보입니다.
만약 현재 숫자가 4로 나눴을 때
0이면 RR, 3이면 rr이겠지만
1 2 라면 Rr 구간인지 아닌지 살펴야합니다.
만약 3 8의 경우라면
7%4-->3 -->rr
만약 3 6인 경우라면
5%4-->2 --> RR,rr 둘 다 아님.
1%4-->1 -->Rr에서 내려온 것.
따라서 Rr
그러니 stack안에
계속 4로 나눴을 때 나머지를 받아주고
마지막부터 차근차근 올라가는 데로 받아야합니다.
def solution(queries):
answer = []
for n, p in queries:
if n == 1:
answer.append("Rr")
continue
now = 2
p -= 1
go = False
stack = []
while now <= n:
re = p % 4
stack.append(re)
p //= 4
now += 1
print(stack)
go = True
while stack:
now = stack.pop()
if now == 0:
go = False
answer.append("RR")
break
elif now == 3:
go = False
answer.append("rr")
break
if go:
answer.append("Rr")
return answer
반복되는 구조가 이어질 때
어떤 식으로 자료를 처리해야하는지 정리할 수 있었습니다.
[프로그래머스Lv.3] 퍼즐조각 채우기(파이썬) (0) | 2023.02.17 |
---|---|
[프로그래머스] 주식가격(파이썬) (3) | 2023.01.13 |
[프로그래머스 Lv.3] 여행경로(파이썬) (1) | 2023.01.10 |
[Softeer인증시험1차 기출] 안전운전을 도와줄 차세대 지능형 교통시스템(파이썬) (1) | 2023.01.05 |
[Softeer 인증평가 1차 기출] 로봇이 지나간 경로(파이썬) (1) | 2023.01.05 |
댓글 영역
Tabris4547님의
글이 좋았다면 응원을 보내주세요!
이 글이 도움이 됐다면, 응원 댓글을 써보세요. 블로거에게 지급되는 응원금은 새로운 창작의 큰 힘이 됩니다.
응원 댓글은 만 14세 이상 카카오계정 이용자라면 누구나 편하게 작성, 결제할 수 있습니다.
글 본문, 댓글 목록 등을 통해 응원한 팬과 응원 댓글, 응원금을 강조해 보여줍니다.
응원금은 앱에서는 인앱결제, 웹에서는 카카오페이 및 신용카드로 결제할 수 있습니다.