본문 바로가기

CS/Algorithm8

백준 10828 문제 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 사용 언어 javaScript 풀이 // let fs = require('fs'); // let input = fs.readFileSync('/dev/stdin').toString().split('\n'); const input = ['14', 'push 1', 'push 2', 'top', 'size', 'empty', 'pop', 'pop', 'pop', 'size', .. 2021. 5. 17.
백준 1874 문제 https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 사용 언어 javaScript 풀이 let fs = require('fs'); let input = fs.readFileSync('/dev/stdin').toString().split('\n'); // const input = ['8', '4', '3', '6', '8', '7', '5', '2', '1']; .. 2021. 5. 17.
백준 9093 문제 https://www.acmicpc.net/problem/9093 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 www.acmicpc.net 사용 언어 javaScript 풀이 let fs = require('fs'); let input = fs.readFileSync('/dev/stdin').toString().split('\n'); // const input = ['2', 'I am happy today', 'We want to win the first prize']; const count = Number(input[0.. 2021. 5. 17.
백준 9012번 문제 9012번 https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 사용 언어 javaScript 풀이 let fs = require('fs'); let input = fs.readFileSync('/dev/stdin').toString().split('\n'); const count = Number(input[0]); function judge(ps) { let openCount = 0; let closeCount .. 2021. 5. 17.
해시 > 전화번호 목록 문제 코딩테스트 연습 - 전화번호 목록 풀이 def solution(phone_book): answer = True phone_book.sort() for i in range(1, len(phone_book)): compare = phone_book[i -1] compare_1 = phone_book[i] if compare == compare_1[:len(compare)]: answer = False return answer return answer 속도 min : 통과 (0.00ms, 10.1MB) max : 통과 (109.85ms, 30.5MB) 다른 풀이 해시로 풀려고 했는데 아무리 생각해도 속도가 느릴거 같다. hash_func을 새로 정의해볼까도 생각했는데 접두사에 길이가 정해져 있으면 가능했.. 2021. 4. 4.
힙 > 더 맵게 문제 코딩테스트 연습 - 더 맵게 풀이 import heapq def solution(scoville, K): answer = 0 heapq.heapify(scoville) L = len(scoville) min_k = heapq.heappop(scoville) for i in range(1, L): second_k = heapq.heappop(scoville) min_k = heapq.heappushpop(scoville, min_k + (second_k * 2)) if min_k >= K: return i return -1 속도 min : 통과 (0.01ms, 10.2MB) max : 통과 (2129.86ms, 51.9MB) 다른 풀이 heap 사용 → import heapq heapq 만들기 → h.. 2021. 4. 4.
스택 > 다리를 지나는 트럭 문제 코딩테스트 연습 - 다리를 지나는 트럭 풀이 import collections class Bridge: def __init__(self, bridge_length, weight): self.possible_weight = weight self.cur_weight = 0 truck_dummy = 0 self.bridge_deque = collections.deque() for _ in range(bridge_length): self.bridge_deque.append(truck_dummy) def cross(self, truck_weight): self.cur_weight += truck_weight self.bridge_deque.append(truck_weight) crossed_weight = .. 2021. 3. 28.
해시> 완주하지 못한 선수 문제 https://programmers.co.kr/learn/courses/30/lessons/42576?language=python3 풀이 def solution(participant, completion): part_dict = {} for person in participant: part_dict.setdefault(person, 0) part_dict[person] += 1 for comp in completion: part_dict[comp] -= 1 for person, count in part_dict.items(): if count > 0: return person 속도 min : 통과 (0.01ms, 10.2MB) max : 통과 (56.62ms, 33.9MB) 다른 풀이 import .. 2021. 3. 28.