본문 바로가기

알고리즘47

[프로그래머스] 로또의 최고 순위와 최저 순위 문제 https://programmers.co.kr/learn/courses/30/lessons/77484 내가 생각했던 풀이과정 1. 일단 0의 갯수를 셉니다. 0의 갯수를 세어야하는 이유는 0의 숫자만큼 숫자가 지워졌을 때 두 가지 경우로 나눠지기 때문 입니다. 1) 최선의 조건일 때는 0 대신에 로또 당첨 숫자에 맞는 숫자를 넣을 수 있습니다. 2) 최악의 조건일 때는 0 대신에 로또 당첨 숫자에 맞지 않는 숫자를 넣을 수 있습니다. 2. 두번째로 0을 제외한 경우 맞은 갯수를 셉니다. 3. 최선의 경우: 0의 갯수 대로 1) 조건일 때는 맞은 갯수에 0의 갯수를 더해줍니다. 최악의 경우: 0의 갯수와 상관없이 맞은 갯수가 그대로 당첨 숫자와 일치한 갯수가 되게 됩니다. 4. 순위를 매겨야하기 때문.. 2021. 5. 28.
[Baekjoon] 백준 알고리즘: 9012 - 괄호 문제 https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 내가 생각했던 풀이과정 기본 VPS인 올바른 괄호 문자열을 만족하려면 1) 여는 괄호의 갯수와 닫는 괄호의 갯수가 같아야합니다 2) 또한 한쌍의 여는 괄호와 닫는 괄호의 짝이 맞아야합니다 이를 스택을 이용하면 쉽게 구현할 수 있습니다. 이 문제의 핵심은 '문자열을 앞에서부터 읽어나갈 때, 닫는 괄호는 남아있는 괄호 중에서 가장 최근에 들어온 여는 괄호와 짝을 지.. 2021. 5. 25.
[Baekjoon] 백준 알고리즘: 11866 - 요세푸스 문제 0 문제 https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 내가 생각했던 풀이과정 1. K번째 사람을 제거하고, 남은 사람들로 이루어진 원을 따라 계속한다는 점은 원하는 요소를 pop할 수 있게 회전 한 후 pop한다고 생각을 하여 deque를 이용하였다. 2. 원하는 요소를 pop하기 위해 -(K-1) 만큼 회전을 한다. -(K-1) 만큼 회전하는 이유는 좌로 회전하기 위함이다 3. 좌로 회전을 하고 맨 처음 요소를 popleft 한 것을 리스트에 넣는다. 리스트에 넣을 때는 안에 넣어야하기 때문에 문자열로 처리해서 넣는다. .. 2021. 5. 23.
[Baekjoon] 백준 알고리즘: 2164 - 카드2 문제 https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 내가 생각했던 풀이과정 1. 맨 앞 요소를 선택해서 버려야하고, 버린 다음의 다시 맨 앞요소를 선택해야하는 구조라서 양방향 큐(deque)를 사용하였다. deque를 사용할 경우에는 앞, 뒤 양쪽 방향에서 엘리먼트(element)를 추가하거나 제거할 수 있다. deque는 양 끝 element의 append와 pop이 압도적으로 빠르기 때문에 사용하였다. 2. deque의 원소가 1개 남을 .. 2021. 5. 22.