stack(5)
-
[BOJ] 9935번 | 문자열 폭발 (C++)
🔗문제 보러가기 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net 🧑💻풀이 과정 string을 스택(stack)처럼 사용하여 풀었습니다. 정답을 저장할 string 변수(answer)를 따로 준비한 후, 주어진 문자열을 차례대로 순회하였습니다. 그리고 다음과 같은 과정을 진행해 주었습니다. 현재 읽은 문자열을 answer 변수에 넣습니다. 현재 읽은 문자열이 폭발 문자열의 마지막 문자와 같다면, 다음 과정을 거칩니다. answer와 폭발 문자열을 뒤에서부터 차례대로 읽으며 비교합니다. 두 문자열..
2023.10.08 -
[Programmers] Lv2. 큰 수 만들기 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 처음에는 너무 쉬운데? 하면서 내림차순으로 정렬 후 뒤의 숫자 k개를 제거하는 방식으로 풀었으나, 문제를 제가 잘못 이해했더라구요. 기존에 주어지는 number 수들은 기존 위치를 지켜야 했습니다. 예제 2번의 "1231234"를 예시로 들면, // 제거할 숫자에 '|'표시 || | "1231234" -> "3234" 결과로 나온 "3234"는 기존과 같이 똑같은 순서를 유지하고 있다는 겁니다. 이런 방식으로 풀어야 했네요. 그래서 저는 스택(Stack)을 이용해서 제거하고 남..
2023.06.27 -
[Programmers] Lv2. 택배상자 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 문제에서 스택(Stack) 쓰라고 대놓고 제시해줘서, 스택 썼습니다. 다만, order 길이가 백만 개라 시간 초과가 날까 걱정했는데 안 나더라구요. 아무래도 실을 수 없는 경우가 생기기에 백만 개를 다 보지 않아서 그런가 봅니다. 저는 다음 순서를 통해 코드를 작성하였습니다. 현재 택배 상자 번호 == order[i]라면, answer + 1을 해줍니다. 현재 택배 상자 번호 < order[i]라면, order[i] - 1까지 스택에 넣어주고 answer + 1을 해줍니다. ..
2023.06.26 -
[Programmers] Lv2. 주식가격 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 문제 지문의 설명이 너무 전달력 없이 작성되어 있어, 다른 분이 재해석하신 글을 참고하였습니다. 저는 스택(Stack)을 이용하여 풀었습니다. prices의 크기만큼 answer 배열에 메모리 공간을 할당해둔다. 스택에 저장되는 데이터는 이다. for문을 통해, 1초부터 prices 크기까지 초를 세며 진행한다. 스택이 비었거나, 현재 주가가 스택 top()의 주가보다 크다면 현재 주가와 시간을 스택에 삽입한다. 위 조건에 해당하지 않는다면, 주가가 낮아진 것이므로 스택에서 현..
2023.06.22 -
[Programmers] Lv2. 뒤에 있는 큰 수 찾기 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 입력 데이터의 크기가 백만 개라 \( O(N^2) \)으로는 풀 수 없습니다. 어떤 자료구조를 쓸까 고민을 많이 했습니다. 문제에서 볼 수 있는 특징들은 다음과 같습니다. 입력 데이터를 차례대로 순회 시작 현재 숫자가 뒤의 숫자보다 작다면, 뒤의 숫자는 뒷 큰수이므로 현재 숫자를 해당 뒷 큰수로 교체 현재 숫자가 뒤의 숫자보다 크다면, 뒷 큰수가 있을 수도 없을 수도 있는 숫자이므로 따로 관리 따로 관리되는 이 숫자들은 훗날 뒷 큰수를 만났을 때, 해당 뒷 큰수보다 작은 숫자들..
2023.06.04