반응형

Stack 10

Stack Overflow와 Memory Leak의 차이

C++에서 지역 변수는 stack에 잡히고, new로 만든 객체는 heap에 잡힌다는 설명을 한 번쯤 들어봤을 것입니다.그런데 실무에서 memory 문제를 볼 때는 이 문장만으로 부족합니다.stack overflow, memory leak, dangling pointer, large allocation, recursion, global object 초기화 문제는 모두 Process memory layout을 이해해야 제대로 해석할 수 있습니다. Process memory layout은 프로그램 코드, 전역 데이터, 동적 할당 객체, 함수 호출 정보를 운영체제가 한 Process의 Virtual address space 안에서 어떻게 구분해 관리하는지 보여주는 지도입니다. 이번 글에서는 Text, Data..

CS 2026.07.03

(프로그래머스 C++ KAKAO)표 편집

https://programmers.co.kr/learn/courses/30/lessons/81303?language=cpp 코딩테스트 연습 - 표 편집 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z"] "OOOOXOOO" 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z","U 1","C"] "OOXOXOOO" programmers.co.kr 링크드 리스트 형태의 구조체를 선언하여 풀이. Node 구조체를 선언하고 내부에는 val, prev, next를 가지도록 한다. 초기값은 모두 -1을 가지며, for문을 통해 값을 모두 갱신한다. Node 구조체 배열을 node라는 이름으로 n개의 크기만큼 선언하고, Node 구조체를 저장..

(Leet Code JS) Populating Next Right Pointers in Each Node

https://leetcode.com/problems/populating-next-right-pointers-in-each-node/ Populating Next Right Pointers in Each Node - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com BFS를 이용. BFS에 이용할 queue와 같은 레벨에 있는 노드를 담을 stack을 빈 배열로 선언. answer = root로 정의. 또 다른 pointer를 root로 지정하고, count는 현재..

(TIL Day03-3)자료구조- 스택

스택(Stack) Last In First Out(LIFO) 개념을 가진 선형 자료구조 프링글스 과자를 연상하자! 가장 먼저 들어간 과자는 바닥에 위치하며, 가장 마지막에 들어간 과자는 맨 위에 있다. 그렇기 때문에 가장 마지막에 들어간 과자부터 차례대로 먹을 수 있다! 스택은 배열이나 연결 리스트로 구현 가능하다. JS의 배열은 기본적으로 스택으로 구현된다.(push(), pop() 존재) 데이터 추가 push는 스택에 데이터를 추가한다. 배열의 가장 마지막에 데이터를 저장한다. 데이터 삭제 pop은 스택의 가장 마지막 데이터를 삭제한다. 코드 const stack = []; stack.push(1); stack.push(2); stack.push(3); console.log(stack); stack...

TIL 2021.08.06

(프로그래머스 JS KAKAO)괄호 변환하기

https://programmers.co.kr/learn/courses/30/lessons/60058?language=javascript 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr 스택과 재귀를 활용. 문제의 예시처럼 순서대로 코딩하면 된다. isBalanced(string) 함수 설명: 인자로 받은 string 배열이 균형잡힌 괄호인지 확인하는 함수. 스택을 이용해 괄호를 검사한다. stack이 비어있으면 string 배열은 균형잡힌 괄호라는 뜻으로 true를 반환한다. reverse(string) 함수..

(SWEA c++)1234. [S/W 문제해결 기본] 10일차 - 비밀번호

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14_DEKAJcCFAYD&categoryId=AV14_DEKAJcCFAYD&categoryType=CODE SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 스택을 이용한 문제. n 길이의 숫자를 받아오며, string 형태로 숫자를 저장한다. n개의 길이만큼 char형 stack s에 저장을 하는데 여기서 비밀번호를 만드는 과정을 적용한다. 1. s가 비어있지 않고 top과 i번째의 숫자가 같으면 pop(). 2. s가 비어있거나 top과 i번째의 숫자가 같지 않으면 push() 이를..

SW Expert Academy 2020.10.14

(프로그래머스 c++)짝지어 제거하기

스택을 이용하여 풀면 쉽게 해결할 수 있다. s.size()만큼 반복문을 돌면서 스택에 넣어주자. 만약 스택이 비어있거나 스택의 top이 현재 s[i]와 같지 않다면 스택에 s[i] 문자를 넣어주자..! 하지만 스택의 top이 s[i]와 같다면 pop()을 해주어 같은 문자를 제거하면 된다. 반복문을 다 돌게 되었을 때, 스택이 비어있다면 모든 문자를 짝지어서 제거했기 때문에 1을 반환, 비어있지 않으면 문자가 남아있다는 뜻이므로 0을 반환하면 된다..! #include #include #include using namespace std; int solution(string s) { int answer = 0; stack stk; for(int i = 0; i < s.size(); i++) { if(st..

(프로그래머스 c++)올바른 괄호

스택을 이용하여 올바른 괄호인지 판단하자..! #include 으로 하여 스택을 사용할 수 있게 하였다. 반복문을 s.size()만큼 돌면서 괄호를 스택에 넣어주도록 하였다. s[i] == '(' 이면 stk에 '('를 넣어준다. 만약 ')' 이라면 한번 더 조건을 검사해야한다. 현재 stk가 비어있지 않고, stk.top()이 '('라면 현재까지는 올바른 괄호이므로 stk.pop()을 해준다. 하지만 위 조건이 맞지 않는다면 그대로 ')'을 넣어준다. s.size()만큼 돌면서 스택에 넣어주고 빼는 동작을 반복한다. for문을 빠져나와 skt가 비어있는지 검사하자..! 만약 비어있으면 올바른 괄호이므로 true를 반환하고, 아니면 올바른 괄호가 아니므로 false를 반환한다..! #include #in..

반응형