
문제
입력받은 숫자n을 거꾸로 리스트에 저장해서 출력하기
프로그래머스 Level1

나의 풀이
문자열 슬라이싱으로 접근
def solution(n):
answer=[]
nstr = str(n)[::-1]
[answer.append(int(x)) for x in nstr]
return answer
문자열을 거꾸로 출력하는 다른 방법
a = [1,2,3,4,5]
a.sort(reverse=True) # 1
a.reverse() # 2
다른 풀이
스택(stack)으로 접근
스택(Stack)은 자료구조의 한 형태로, 후입선출(Last In First Out, LIFO)의 원칙에 따라 데이터를 관리한다. 쉽게 말하면 가장 마지막에 쌓은 데이터를 가장 먼저 꺼내 사용하는 방식이다. 스택은 일상생활에서도 쉽게 찾아볼 수 있는 구조다. 예를 들어, 책을 쌓아 올린 더미에서 맨 위의 책을 먼저 꺼내는 것과 같다.
출처: https://wikidocs.net/192119
# 방법1. Stack 라이브러리를 활용하는 방법
from stack import Stack
def reverse_string_with_stack(n):
s = Stack() ----- # (1)Stack 객체 선언
answer = []
for i in n:
s.push(i) ----- # (2)문자열 push로 스택에 넣기
while not s.isEmpty():
answer.append(s.pop()) ----- # (3)저장된 값 pop으로 꺼내면서 answer에 저장
return answer
#방법2. 직접 구현
class Node:
def __init__(self, data):
self.data = data
self.next = None
class Stack:
def __init__(self):
self.top = None
def push(self, data):
if self.top is None:
self.top = Node(data)
else:
node = Node(data)
node.next = self.top
self.top = node
def pop(self):
if self.top is None:
return None
node = self.top
self.top = self.top.next
return node.data
def peek(self):
if self.top is None:
return None
return self.top.data
def is_empty(self):
return self.top is None
if __name__ == "__main__":
s = Stack()
for i in range(3):
s.push(chr(ord("A") + i))
print(f"Push data = {s.peek()}")
print()
while not s.is_empty():
print(f"Pop data = {s.pop()}")
print()
print(f"Peek data = {s.peek()}")
* top은 연결리스트에서 첫 노드를 가리키는 head와 같은 속성
오늘의 노트

자료구조를 활용할 생각보다는 for문에 인덱싱 조건을 어떻게 줄까만 한..참 생각했다.
자료구조를 문제와 연결지어서 어떻게 적용해볼지 연습이 계속 필요하겠다~!!
(참고) 스택을 활용한 문제 풀기
04-02. 괄호의 짝이 맞는지 확인하기
[[TIP(문제 설명)]] 괄호의 짝이 바르면 True, 바르지 않으면 False를 반환하는 함수를 작성하라. 예를 들어 `((a*(b+c))-d) / e`는 괄호의 짝이 …
wikidocs.net
'TIL' 카테고리의 다른 글
99클럽 코테 스터디 4일차 TIL + JadenCase 문자열 만들기 (0) | 2024.07.25 |
---|---|
99클럽 코테 스터디 3일차 TIL + 글자 수 세기 (8) | 2024.07.25 |
99클럽 코테 스터디 2일차 TIL + 배열의 평균 (2) | 2024.07.23 |

문제
입력받은 숫자n을 거꾸로 리스트에 저장해서 출력하기
프로그래머스 Level1

나의 풀이
문자열 슬라이싱으로 접근
def solution(n):
answer=[]
nstr = str(n)[::-1]
[answer.append(int(x)) for x in nstr]
return answer
문자열을 거꾸로 출력하는 다른 방법
a = [1,2,3,4,5]
a.sort(reverse=True) # 1
a.reverse() # 2
다른 풀이
스택(stack)으로 접근
스택(Stack)은 자료구조의 한 형태로, 후입선출(Last In First Out, LIFO)의 원칙에 따라 데이터를 관리한다. 쉽게 말하면 가장 마지막에 쌓은 데이터를 가장 먼저 꺼내 사용하는 방식이다. 스택은 일상생활에서도 쉽게 찾아볼 수 있는 구조다. 예를 들어, 책을 쌓아 올린 더미에서 맨 위의 책을 먼저 꺼내는 것과 같다.
출처: https://wikidocs.net/192119
# 방법1. Stack 라이브러리를 활용하는 방법
from stack import Stack
def reverse_string_with_stack(n):
s = Stack() ----- # (1)Stack 객체 선언
answer = []
for i in n:
s.push(i) ----- # (2)문자열 push로 스택에 넣기
while not s.isEmpty():
answer.append(s.pop()) ----- # (3)저장된 값 pop으로 꺼내면서 answer에 저장
return answer
#방법2. 직접 구현
class Node:
def __init__(self, data):
self.data = data
self.next = None
class Stack:
def __init__(self):
self.top = None
def push(self, data):
if self.top is None:
self.top = Node(data)
else:
node = Node(data)
node.next = self.top
self.top = node
def pop(self):
if self.top is None:
return None
node = self.top
self.top = self.top.next
return node.data
def peek(self):
if self.top is None:
return None
return self.top.data
def is_empty(self):
return self.top is None
if __name__ == "__main__":
s = Stack()
for i in range(3):
s.push(chr(ord("A") + i))
print(f"Push data = {s.peek()}")
print()
while not s.is_empty():
print(f"Pop data = {s.pop()}")
print()
print(f"Peek data = {s.peek()}")
* top은 연결리스트에서 첫 노드를 가리키는 head와 같은 속성
오늘의 노트

자료구조를 활용할 생각보다는 for문에 인덱싱 조건을 어떻게 줄까만 한..참 생각했다.
자료구조를 문제와 연결지어서 어떻게 적용해볼지 연습이 계속 필요하겠다~!!
(참고) 스택을 활용한 문제 풀기
04-02. 괄호의 짝이 맞는지 확인하기
[[TIP(문제 설명)]] 괄호의 짝이 바르면 True, 바르지 않으면 False를 반환하는 함수를 작성하라. 예를 들어 `((a*(b+c))-d) / e`는 괄호의 짝이 …
wikidocs.net
'TIL' 카테고리의 다른 글
99클럽 코테 스터디 4일차 TIL + JadenCase 문자열 만들기 (0) | 2024.07.25 |
---|---|
99클럽 코테 스터디 3일차 TIL + 글자 수 세기 (8) | 2024.07.25 |
99클럽 코테 스터디 2일차 TIL + 배열의 평균 (2) | 2024.07.23 |