회고
# 1
맨 앞에 부호(+, -)가 올 수 있다.'라는 조건에서 이것이 이 문제의 key가 되는 조건이라고 생각이 들었다.
# 2
슬라이싱(slicing) : 연속적인 객체(list, tuple, string, etc)들에 범위를 지정해서 선택한 객체들을 가져오는 방법
s = 'slicing'
print(s[1]) # l
print(s[2:4]) # ic, s[2]부터 s[4] 전까지 총 4-2 = 2개
print(s[4:]) # ing, s[4]부터 끝까지
print(s[4:]) # slic, s[4]전까지 4개!
print(s[:]) # 처음부터 끝까지!
print(s[-1]) # g, 뒤에서 첫 번째
print(s[-2]) # n, 뒤에서 두 번째
회고
처음에는 '제곱근을 어떤 식으로 표현하지?' 라고 생각하느라 한참 멍을 때렸지만 핵심은 'x를 정의해주는 것'이라는 결론이 나왔다.
n은 주어지고 x를 구해야하는데 그것을 식으로 표현해도 x가 정의되지 않으면 'NameError: name 'x' is not defined'이런 에러가 날 것이다.
파이참 설정 > General > Console > Default Encording : ( x-windows-949 -> UTF-8 )
네모 상자 1개 + 화살표 1개
class ListNode:
# def __init__(self, val=0, None) : 기본값을 지정하는 문법
def __init__(self, val, next): # 받을 값. self: (생성한 인스턴스 객체)나 val: 값 next: 다음 값의 주소
self.val = val # 받은 값을 저장. self.val = val: 나의 value = 값
self.next = next # self.next = next: 나의 next = 다음 값 주소
1. 리스트를 입력 받음.
class LinkedList: # 삽입, 삭제 기능이 있어야함.
def __init__(self):
self.head = None # 3번째 메모리 박스로 접근하려면 1번째 박스로 가서 순차적으로 접근할 수 밖에 없는데 이때, 1번째 박스를 head라고 하자.
# 'None': 아직 아무 데이터도 안 들어왔다. (or ListNode(None,None))
def append(self, val):
if not self.head: # 만약, head가 없으면
self.head = ListNode(val, None) # 다음 값(요소)은 없고 입력 받은 값을 넣어주는 ListNode를 만들어서 head라고 하자.
return # 왜 다음은 없는 ListNode 박스를 만드냐 : 하나하나 붙여주는데 마지막 박스에는 다음 값을 넣어주기 전까지는 화살표(다음 값의 주소)는 None일 것이다.
node = self.head # 내가 바라보고 있는 노드를 head라고 한다.
while node.next: # node에 다음이 있는 한, 화살표가 존재하는 한
node = node.next # 다음으로 계속 넘어감. while문이 끝났을 때 바라보고 있는 node는 제일 끝 node일 것.
node.next = ListNode(val, None) # ListNode 박스를 새로 하나 만들어서 다음 node에 붙여준다. = append
2. self.head가 없으면 ListNode 박스를 넣음.
3. head가 이미 있다면, 쭉 넘어가서 마지막에 박스를 넣어준다.
lst = [1,2,3] # LinkedList화 시켜보자.
l1 = LinkedList() # LinkedList 객체를 하나 만든다.
for e in lst:
l1.append(e) # lst에 있는 모든 요소를 l1에 append하고 node들에 어떻게 들어가 있는지 보자.
print(l1)
class Node: # Node의 정보
def __init__(self, item, next): # Node가 가져야 하는 것들 item = 내가 어떤 값을 가져야하는지, next = 내가 가리키는게 뭔지
self.item = item # 내 값은 item이다.
self.next = next # 내가 가리키고 있는 것은 next이다.
class Stack: # 스택의 정보
def __init__(self): # 일단 쌓인게 없으니 top이 비었다는 것을 표시
self.top = None
def push(self, value): # Node를 만들어 넣어주는데 받은 value(값)을 넣어주고 새로운 탑이 되는 이 Node가 가리키는 것은 기존에 있던 top이다.
self.top = Node(value, self.top)
def pop(self):
if self.top is None: # top이 없으면 꺼낼게 없으니 None을 반환
return None # top을 꺼낸 후 다음 top이 없을 때 오류나는 것을 방지하기 위한 코드
node = self.top # top이 있다면 제일 위에 있는 top을 꺼내고
self.top = self.top.next # 다음 top이 top이 된다.
return node.item # 꺼낸 top의 값을 반환
def is_empty(self): # top이 비어있는지 아닌지를 판단해서 반환
return self.top is None
같은 지역의 독거 노인이나 한 부모 가정, 소년/소녀 가장 등 생계가 위태로운 가정에서 당장 필요한 물품들을 위시리스트에 넣어놓는다.
사용자들은 위시리스트의 물품 금액을 기부하고 결제금의 일정 퍼센트의 지역 상품권을 받는다.