: 한 쪽 끝으로만 자료를 넣고 뺄 수 있는 구조.
( 맨 꼭대기에 새로운 데이터를 넣고, 빼는 구조 )
class Node:
def __init__(self, data):
self.data = data
self.next = None
class Stack:
def __init__(self):
self.head = None
# 맨 꼭대기에 새로운 데이터를 넣기
def push(self, value):
new_head = Node(value)
new_head.next = self.head
self.head = new_head
return
# 맨 꼭대기에 있는 데이터를 뽑아서 반환하기
def pop(self):
if self.is_empty():
return "Stack is empty"
delete_head = self.head
self.head = self.head.next
return delete_head
# 가장 꼭대기에 있는 데이터를 반환
def peek(self):
if self.is_empty():
return "Stack is empty"
return self.head.data
# isEmpty 기능 구현 : 빈 건지 아닌지 확인
def is_empty(self):
return self.head is None
: 한쪽 끝으로 자료를 넣고, 반대쪽에서는 자료를 뺄 수 있는 구조.
( 끝에 새로운 데이터를 넣고, 앞에서 자료를 빼는 구조 )
class Node:
def __init__(self, data):
self.data = data
self.next = None
class Queue:
def __init__(self):
self.head = None
self.tail = None
# 끝에 새로운 데이터 넣기
def enqueue(self, value):
new_node = Node(value)
if self.is_empty():
self.head = new_node
self.tail = new_node
self.tail.next = new_node
self.tail = new_node
return
# 맨 앞에서 데이터를 빼서 반환하기
def dequeue(self):
if self.is_empty():
return "Queue is Empty"
delete_head = self.head
self.head = self.head.next
return delete_head.data
# 가장 꼭대기에 있는 데이터를 반환
def peek(self):
if self.is_empty():
return "Queue is Empty"
return self.head.data
# isEmpty 기능 구현 : 빈 건지 아닌지 확인
def is_empty(self):
return self.head is None
: Math.floor()함수는 항상 내림하고 주어진 숫자보다 작거나 같은 가장 큰 정수를 반환한다. ( 소수점아래 버림 = 몫 나타내기 )
//5a와 b를 10으로 나눈 몫을 더하는 answer을 반환하는 과정
function solution(a, b) {
let answer = (5*a) + (Math.floor( b / 10));
return answer;
}
: 배열을 정렬하는 method.
sort는 순서대로 정렬해주고, reverse는 역순으로 정렬해준다.
//배열의 내용을 뒤집은(역순으로 정렬한) 배열 answer을 반환
function solution(num_list) {
let answer = num_list.reverse()
return answer;
}
//배열의 내용을 순서대로 정렬한 배열 answer 반환
function solution(num_list) {
let answer = num_list.sort()
return answer;
}
: 인자로 주어진 배열이나 값들을 기존 배열에 합쳐서 새 배열을 반환한다.
const arr1 = ['a', 'b', 'c','d'];
const arr2 = ['e', 'f', 'g', ];
const arr3 = arr1.concat(arr2);
console.log(arr3);
// expected output: Array ["a", "b", "c", "d", "e", "f","g"]
: 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경하는 method
문법( 생활코딩 ) : array.splice(index(, howmany(삭제할 개수), element1, ...., elementN);
let arr = ['a', 'b', 'c', 'd', 'e'];
arr.splice( 1 , 0 ,'f')
//index 1번째 자리에 'f'를 추가해라
console.log(arr);
// => ['a', 'f', 'b', 'c', 'd', 'e'];
let list = ['a', 'b', 'c', 'd', 'e'];
list.splice( 2, 1 , 'h', 'i')
//index 2번째 자리에 하나('c')를 삭제하고, 'h'와 'i'를 추가한다.
console.log(list)
//=>['a', 'b', 'h', 'i', 'd', 'e']
: shift() method는 배열에서 첫 번째 요소를 제거하고, 제거된 요소를 반환한다.
let arr = ['a', 'p', 'p', 'l', 'e'];
li.shift(); //'a'
console.log(arr);
// => ['p', 'p', 'l', 'e']
: unshift() method는 새로운 요소를 배열의 맨 앞쪽에 추가하고, 새로운 길이를 반환합니다.
let li = [ 'a', 't'];
li.unshift('c');
console.log (li)
=> ['c', 'a', 't']
오늘은 stack과 que자료구조 공부하고, 생활코딩강의 보면서 자바스크립트 복습하면서 문법내용도 보충해보는 시간도 가졌다. 그리고 프로그래머스로 자바스크립트 문제도 몇 개 풀어봤는데, 풀면서 뭔가 '이건 이렇게 풀면 되겠다.' 하는 느낌도 살짝(?) 온 것 같아서 뿌듯한 기분이 들었던 하루였다.
매일 자바스크립트랑 파이썬만하다가 html,css 다 까먹을 것 같아서 여러가지 한 번 만들어 보는 시간도 가져봐야겠다 ! :-)
fifo lifo 로 큐스택 개념도 찾아보시면 도움 되실거에요!
어제도 고생하셨습니다 ㅎㅎ