Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 큐
- 다익스트라
- RGB거리2
- 거리두기확인하기
- 도넛과막대그래프
- 자물쇠와열쇠
- 프림알고리즘
- 알고리즘
- DFS
- 17404
- [1차]캐시
- 징검다리건너기
- 파괴되지않은건물
- 백준
- 최단경로
- 트리의지름
- 이모티콘할인행사
- javascript
- 벽부수고이동하기
- 사이클게임
- 프로그래머스
- 위상정렬
- 최소스패닝트리
- 그래프탐색
- 섬연결하기
- 두큐합같게만들기
- 구현
- 파이썬
- BFS
- DP
Archives
- Today
- Total
블로그 이름 뭐로 하지
[알고리즘] 프로그래머스 - 튜플 본문
문제
https://school.programmers.co.kr/learn/courses/30/lessons/64065
풀이
얘도 예전에 풀었던 문제인데, 그 당시엔 문자열에서 숫자를 뽑아내서 배열을 만들 때 정규식을 활용했었다.
근데 사실 난 정규식 사용을 잘 못한다 ^ . ^ 그니까 검색해서 하는건 할 수 있어도 코딩테스트 때 아무것도 없이 짜라고 했으면 정규식으로는 못 짰을거다....
그래서 이번엔 정규식을 안 쓰고 그냥 스택을 활용해서 { 으로 열릴 때랑 }으로 닫힐때는 판단하고 쉼표로 다른 숫자가 나올 때를 고려해서 풀었다.
근데 다 풀고 나니까 split()함수가 생각이 나서...이 함수를 이용해서 하니 확실히 훨씬 간단한 코드가 되더라. 이 코드는 맨 밑에 첨부해놨다!
정답 코드
from collections import deque
def solution(s):
new_arr = []
arr = list(s)
arr = arr[1:-1]
q = deque(arr)
while q:
cnt = q.popleft()
if cnt == '{':
num = ''
cnt_arr = []
while True:
word = q.popleft()
if word == '}':
cnt_arr.append(num)
new_arr.append(cnt_arr)
break
elif word == ',':
cnt_arr.append(num)
num = ''
else:
num += word
new_arr.sort(key=lambda x:len(x))
answer = []
for array in new_arr:
for num in array:
num = int(num)
if num not in answer:
answer.append(num)
return answer
그 외
def solution(s):
# {{, }}를 제거 후 },{ 으로 나누기
data = s[2:-2].split("},{")
# 길이 별로 오름차순 정렬
data = sorted(data, key=lambda x: len(x))
answer = []
for item in data:
# 각각의 원소로 분류 후
item = list(map(int, item.split(",")))
for value in item:
# 포함되어 있지 않으면 input
if value not in answer:
answer.append(value)
return answer
문자열에서 배열을 뽑아내는 부분 말고는 똑같은 것 같은데, 배열을 뽑아내는 부분이 훨~~씬 간단하다 ㅎㅎ 왜 split 생각을 못했는지...그래도 뭐 머리 굴려서 풀었음 된거지!
'알고리즘' 카테고리의 다른 글
[알고리즘] 백준 1167 - 트리의 지름 (0) | 2023.12.31 |
---|---|
[알고리즘] 프로그래머스 - [1차] 다트 게임 (0) | 2023.12.30 |
[알고리즘] 프로그래머스 - [1차] 캐시 (0) | 2023.12.30 |
[알고리즘] 백준 1149 - RGB거리 (0) | 2023.12.29 |
[알고리즘] 백준 1043 - 거짓말 (0) | 2023.12.27 |