알고리즘/BaekJoon 114

백준 4991 : 로봇 청소기

문제 링크입니다 https://www.acmicpc.net/problem/4991 4991번: 로봇 청소기 문제 오늘은 직사각형 모양의 방을 로봇 청소기를 이용해 청소하려고 한다. 이 로봇 청소기는 유저가 직접 경로를 설정할 수 있다. 방은 크기가 1×1인 정사각형 칸으로 나누어져 있으며, 로봇 청소기의 크기도 1×1이다. 칸은 깨끗한 칸과 더러운 칸으로 나누어져 있으며, 로봇 청소기는 더러운 칸을 방문해서 깨끗한 칸으로 바꿀 수 있다. 일부 칸에는 가구가 놓여져 있고, 가구의 크기도 1×1이다. 로봇 청소기는 가구가 놓여진 칸으로 이동할 수 없다. 로봇은 www.acmicpc.net 직사각형 모양의 방에 로봇 청소기가 한 대 있고, 방의 각 칸은 깨끗한 칸과 더러운 칸으로 나누어져 있으며, 로봇 청소기..

백준 10972 : 다음 순열

문제 링크입니다 https://www.acmicpc.net/problem/10972 10972번: 다음 순열 첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 헤더 파일에 들어있는 next_permutation 함수는 다음 순열을 구해주는 함수입니다. bool type으로 다음 순열이 있으면 true, 없으면 false를 반환하기 때문에 문제에서 주어진 조건에 다음 순열이 없으면 -1을 출력하라는 조건도 어렵지 않게 구현할 수 있습니다. [소스코드] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include #include #include us..

백준 10866 : 덱

문제 링크입니다 https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다. www.acmicpc.net C++ STL 중 덱을 이용해서 풀어야 하는 문제였습니다. 문제에서 주어진대로 그대로 구현하기만 하면 어렵지 않게 문제를 해결할 수 있었습니다. [소스코드] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 3..

백준 12851 : 숨바꼭질 2

문제 링크입니다 https://www.acmicpc.net/problem/12851 12851번: 숨바꼭질 2 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 그리고 www.acmicpc.net '1697번 숨바꼭질' 문제(https://seokeeee.tistory.com/44)와 유사한 문제였고, 이번 ..

백준 9012 : 괄호

문제 링크입니다 https://www.acmicpc.net/problem/9012 9012번: 괄호 문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(conc www.acmicpc.net 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(VPS)라고 부른다고 합니다. 예를 들어, "(())()"와 "((..

백준 9093 : 단어 뒤집기

문제 링크입니다 https://www.acmicpc.net/problem/9093 9093번: 단어 뒤집기 문제 문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 공백이 하나 있다. 출력 각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어 www.acmicpc.net 문장이 주어졌을 때, 각 단어들을 모두 뒤집어서 출력해야 하는 문제였습니다. 스택을 이용해서 알파벳을 계속 스택에 p..

백준 10845 : 큐

문제 링크입니다 https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다. www.acmicpc.net '10828번 스택' 문제(https://seokeeee.tistory.com/91)와 마찬가지로 STL을 이용해 풀어도 되지만, 큐를 직접 구현해 문제를 풀어봤습니다. 스택 문제에서는 cin과 string을 사용했었는데 이번에는 scanf와 strcmp를 사용해 풀어봤습니다. [소스코드] 1 2 3 4 5 6 7 8 9 10 1..

백준 10828 : 스택

문제 링크입니다 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다. www.acmicpc.net STL을 사용해 풀어도 되는 문제였지만, 스택을 직접 구현해서 문제를 풀어봤습니다. [소스코드] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 4..

백준 6588 : 골드바흐의 추측

문제 링크입니다 https://www.acmicpc.net/problem/6588 6588번: 골드바흐의 추측 문제 1742년, 독일의 아마추어 수학가 크리스티안 골드바흐는 레온하르트 오일러에게 다음과 같은 추측을 제안하는 편지를 보냈다. 4보다 큰 모든 짝수는 두 홀수 소수의 합으로 나타낼 수 있다. 예를 들어 8은 3 + 5로 나타낼 수 있고, 3과 5는 모두 홀수인 소수이다. 또, 20 = 3 + 17 = 7 + 13, 42 = 5 + 37 = 11 + 31 = 13 + 29 = 19 + 23 이다. 이 추측은 아직도 해결되지 않은 문제이다. 백만 이하의 모 www.acmicpc.net 1,000,000 이하의 짝수 정수 N이 주어질 때, 이 수는 두 홀수 소수의 합으로 나타낼 수 있는지 판단하고,..