전체 글 100

[백준/c++] 10799 - 쇠막대기

https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 1) 풀이 얼핏 보면 어려워보일 수 있지만..! 정답 비율이 꽤 높은 다소 단순한 문제 😆 이 문제에서는 쇠막대기와 레이저 모두 ( 와 )를 이용하여 나타낸다. 하지만, 쇠막대기와 레이저를 구분하는 방법은 꽤 단순하다. 이전 문자열을 확인하여, 이전 문자열이 ( 라면 레이저, 아니라면 쇠막대기라고 생각해주면 된다. 이것을 기억하고, 문자열의 문자 하나하나를 읽어가면서, ( 괄호를 스택에 넣고 )를 만날때마다..

[백준/c++] 2504 - 괄호의 값

https://www.acmicpc.net/problem/2504 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 www.acmicpc.net 1) 풀이 분명 문제를 내 손으로 직접 풀었음에도 불구하고 다시 풀었을 때, 유난히 어려운 문제들이 몇개 있는데 그 몇개 중 하나가 이 문제였다😭 이틀이 걸려서 문제를 겨우 맞혔을 때 정말 뿌듯하기도 했지만 자꾸 98%에서 틀렸다고 나온 이유가 딱 한가지의 예외처리를 해주지 않아서 라는 걸 알게 됐을 때 얼마나 허무하던지.... 아무튼, 문제는 입력된 문자열이 올바른 괄호열일때, 그 괄호열에 알..

[백준/c++] 11728 - 배열 합치기

https://www.acmicpc.net/problem/11728 11728번: 배열 합치기 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거 www.acmicpc.net 1) 풀이 주어지는 배열 모두 정렬되어 있기 때문에, 각 배열의 맨 앞 원소를 대소 비교해서 최종 배열에 넣으면 된다. 문제를 푸는 다양한 방식이 있겠지만 난 이 문제를 보자마자 문제에 쓰이는 모든 배열을 큐(queue)로 만들어야겠다고 생각했다. 각 배열의 front를 비교하고 더 작은 요소를 정답 배열에 넣고 pop 하면 다음 차례에도 front로 비교하면 ..

[백준/c++] 9012 - 괄호

https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 1) 풀이 2021/03/04 - [알고리즘 코테준비/백준] - [백준/c++] 4949 - 균형잡힌 세상 2021/03/05 - [알고리즘 코테준비/백준] - [백준/c++] 4889 - 안정적인 문자열 이 문제는 위의 문제들과 같은 방법으로 풀면 되기 때문에 따로 풀이를 적진 않겠다! 다만, 자꾸 똑같은 실수를 해서 어이없게 틀리는 경우가 나와서 적어둔다. 문제에..

[백준/c++] 4889 - 안정적인 문자열

https://www.acmicpc.net/problem/4889 4889번: 안정적인 문자열 입력은 여러 개의 데이터 세트로 이루어져 있다. 각 데이터 세트는 한 줄로 이루어져 있다. 줄에는 여는 괄호와 닫는 괄호만으로 이루어진 문자열이 주어진다. 문자열의 길이가 2000을 넘는 경우 www.acmicpc.net 1) 풀이 이 문제는 이전에 풀었던 '4949 - 균형잡힌 세상' 문제의 응용버전이다. (괄호에 대한 기본적인 접근 방식은 아래 이전 글을 참고해주길 바람) 2021/03/04 - [알고리즘 코테준비/백준] - [백준/c++] 4949 - 균형잡힌 세상 4949번 같은 경우에는 괄호들이 짝이 맞는가? 에 대해서만 물었다면 이 문제는 괄호들이 짝이 맞기 위해서는 연산이 몇 번 필요한가? 에 대해..

[백준/c++] 4949 - 균형잡힌 세상

https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마 www.acmicpc.net 1) 풀이 오늘은 개인적으로 몸이 안 좋아서 풀이가 상당히 횡설수설일 수 있으나 하루에 한 개는 꼭 풀고 올리자는 다짐을 져버릴 수는 없어서 한 번 올려본다... 너무 읽기 힘들면 나중에 수정하는 수밖에... 😥 아무튼! 이 문제는 스택을 이용하여 소괄호와 대괄호의 짝을 지어주어 짝이 맞으면 "yes"를, 맞지 않으면 "no"를 출력해주는 비교적 간단한 문제이다. '짝을 지어준다'라..

[백준/c++] 5430 - AC

https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 1) 풀이 이 문제를 풀면서 까다롭다고 생각한 부분을 정리해보았다. 1) R(배열을 뒤집는 함수) : 진짜 배열전체를 거꾸로 뒤집으려면 연산을 너무 많이 진행해야 하므로, 해당 명령어가 나올 때마다 그냥 뒤집은 척만 해준다! »배열의 앞뒤가 바뀌어버리는 것과 같으므로, 현재 배열의 앞이 front인지 back인지 가리키는 변수를 선언하고 (ex. 한 번 뒤집어졌다면 배열의 앞은 back) R 명령어가 나올때마다 바꿔준다. 2) D(배열의 첫번째 숫자를 ..

[백준/c++] 2164 - 카드2

https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 1) 풀이 이 문제는 고민할 필요도 없이 그냥 코드를 적어내려갔고, 내 예상대로 한 번에 정답을 맞혔다 😁 1) 카드를 빼는 경우는 맨앞에서만 일어나고, 카드를 추가하는 경우는 맨 뒤에서만 일어나기 때문에 큐를 이용하여 푼다. 2) 1부터 n까지의 카드를 큐에 넣어준다 3) 한장 남을 때까지 pop과 push를 반복한다. 3) 반복이 끝날 때, 카드는 한장밖에 없으므로 제일 앞의 요소를 출력한다...

[백준/c++] 1021 - 회전하는 큐

https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net 1) 풀이 문제에서 '위치'라는 말이 문제를 조금 헷갈리게 한다고 생각하는데, 이 위치를 인덱스라고 생각하지 말고, 1~n까지 덱에 삽입하고 이 삽입된 값들을 '위치'라고 생각하고 옮기면 되는 문제이다. 즉, 정리해보자면 '뽑고자 하는 수(위치)를 최소 연산(오른쪽/왼쪽으로 옮기기)으로 제일 앞으로 옮기고 pop_front 를 해라' 해당 문제에서 고려할 사항과 풀이 순서는 다음과 같다. 제일..

[백준/c++] 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 1) 풀이 이 문제를 ..

728x90