[C++ / 15666] N과 M (12)
·
Algorism(PS)/백준
문제 15666번: N과 M (12) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 문제 설명 N개의 자연수와 자연수 M이 주어 졌을때, 다음 조건을 만족하는 길이가 M인 수열을 모두 구하면 됨. N개의 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 고른 수열은 비내림차순이어야 한다. 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. 개인적으로 문제를 파악하기엔 중복 순열을 구하되, 비내림차순 조건을 만족하면 되겠다고 생각하고 문제를 푼 것 같다. 풀이 방식 내가..
[C++ / 1181] 단어 정렬
·
Algorism(PS)/백준
문제 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 문제 설명 아래와 같은 조건으로 나열하면 된다. 1. 길이가 짧은 것 부터 2. 길이가 같다면 사전 순으로 3. 중복은 제거한다. 풀이 방식 알고리즘 적으로 적어둘만 한건 없는 것 같다. 솔루션 #include #include #include using namespace std; bool compare(string a, string b) { if (a.length() != b.length()) return a.length() < b.length(..
[C++ / 3085] 사탕 게임
·
Algorism(PS)/백준
문제 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net 문제 설명 봄보니 (Bomboni) 게임. N x N 크기의 랜덤한 사탕으로 채워져있는 판이 있다. 사탕 색이 다른 인접두 칸을 고른 뒤, 두 칸의 사탕을 교환한다. 마지막으로, 모두 같은 색으로 이루어져 있는 가장 긴 연속 부분(행 또는 열)을 고른 다음 그 사탕을 모두 먹는다. 빨간색은 C, 파란색은 P, 초록색은 Z, 노란색은 Y로 주어진다. (뭐, 대충 옛날 애니팡 같은 게임 규칙.) 풀이 방식 이 문제는 brute force 방식 즉, 모든 방법을 다 탐색해야 한다. 1. 우선 (i, j)와 (i, j+1)의 위치를 바꾼다. 2. 그 다음엔 모든 row에 대해서 조..
[C++ / 1874] 스택 수열
·
Algorism(PS)/백준
문제 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 문제 설명 스택의 특성에 따라 수열을 만들 것이다. 하지만 이 수열에 push 하는 순서는 반드시 오름차순을 지켜야 한다. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지 판단하고, 어떤 순서로 push와 pop을 수행해야 하는지 알아내라. 풀이 방식 우선 문제의 이해가 조금 어려웠다. 예시를 들어 설명하자면, 예제의 size가 8인 스택에 수열을 ..