본문 바로가기

Programming/Algorithm 193

백준 문자열 입력받기 #include #include using namespace std; int T;int R;string word; void problem_in() {cin >> R;cin >> word;} void solve() { string word_new = ""; for (int i = 0; i < word.length(); i++) {for (int j = 0; j < R; j++) {word_new += word[i];}} cout T;for (int i = 0; i < T; i++) {problem_in();solve();} return 0;} c++ 에서 문자열 입력받기 위해서, string 을 사용합니다. 그럼 간단하게 한번에 받을 수도 있고, 받은 후에 문자하나씩 접근할 수 있습니다. 그리고 배열의 크.. 2018. 1. 25.
백준 문자열 입력받기 #define _CRT_SECURE_NO_WARNINGS // scanf 보안 경고로 인한 컴파일 에러 방지#include #include using namespace std; int main(){char word[101];int alpha[26];int index; scanf("%s", word);for (int i = 0; i < 26; i++)alpha[i] = -1; // 처음 나오는 것이 몇번째에 나오는지 확인을 하면 좋은데, 예제를 통해서 진행합니다.// b a e k j o o n 순이므로 b 가 나오면, for (int i = 0; !(word[i] == '\0'); i++) {for (int j = 0; j < 26; j++) {if (word[i] == 97 + j && alpha[j].. 2018. 1. 24.
백준 2920 음계 /*다장조는 c de f g a b C 8개의 음으로 으루어져 있습닏. 숫자로 표현 합니다. 1 부터 9까지 차례대로면 ascending, 8부터 1까지 차례대로 연주한다면 decending, 둘다 아니면, mixed 연주한 순서가 주어졌을 때,이것이 acending, descending mixed 인지 판별하는 프로그램을 작성하세요. 입력을 받고 솟팅을 한다음에 하나씩 비교해가면서, 아니면 break 로 나오면 되지요.먼저 받은 것과 받은 것을 저장하는 것을 만들면 됩니다 오케이요. 3가지에 대해서 조사를 해야 하는데, 어떻게 해야하나요. flag 를 해서 if 문으로넘겨야 하는지, */ #include #include #include using namespace std; int a[8] = { 0 }.. 2018. 1. 24.
코드그라운드 블록없애기 /*블록은 엔개의 타워 형태로 쌓여있습니다. 아이번째 타워에는 단위 크기의 블록이 에이치개 쌓여있습니다.내부 블록 인접한 블록이 있다고 봅니다. 외부 블록, 한 단위 시간에 외부 블록을 없애다모든 블록이 없어질 때 까지 걸리는 시간을 구하세요.'자연수 티가 주어지고 티는 25이하 자연수그리고 케이스의 첫줄에는 타워으 ㅣ개숫 엔이 주어집니다. 두번쨰 ㅜㄹ에는 타워의 블록 개수를 의미하는 자연수가 주어집니다. 문제에 주어진 조건 그대로 이프 왼족 오른쪽 블러수0일 경우에는 0현재블럭수보다 많은 경우에는 1 감소현재 블륵수 보다 적을 경우에는 민 왼쪽, 오른쪽 을 모든 블럭이0 일 될떄까지 반복문을 실행하면 됩니다.효율적인 알고리즘을 찾아내야 합니다.같은 답을 가지는 다른 형태의 문제로 알고리즘의 효율성을 높.. 2018. 1. 24.
미궁속의 방 #includeusing namespace std; int N, K;char move_array[300001];long long res; void problem_in(){cin >> N >> K;cin >> move_array;} void solving(){int ik;int i, j, z;char d;int test;long long val, inc; i = 1; j = 1; val = 1; res = 1;for (ik = 0; ik= N + 1);test % 2 == 0 ? z = i : z = j; inc = 2 * z - (test + (d == 'L') + (d == 'R')) % 2;if (i + j >= N + 1) inc = 2 * N - inc; if (d == 'R') { val += .. 2018. 1. 24.
숫자 골라내기 #include #include using namespace std; int main(int argc, char** argv) { setbuf(stdout, NULL); int TC;int test_case; scanf("%d", &TC);// cin 사용 가능for (test_case = 1; test_case > N;for (int i = 0; i> num;ret ^= num;}// 이 부분에서 정답을 출력하십시오.printf("Case #%d\n", test_case);// cout 사용 가능cout 2018. 1. 23.
순열 #include #include int data[] = { 1,2,3}; int swap(int i, int j) {int temp;if (i == j) return 0;temp = data[i];data[i] = data[j];data[j] = temp;return 0;} int Permutation(int TotalN, int N){int i;if (N == 1) {for (i = 0; i < TotalN; i++) {printf("%d ", data[i]);}printf("\n");return 0;} for (i = 0; i < N; i++) {swap(i, N - 1);Permutation(TotalN, N - 1);swap(i, N - 1);}} int main(){int N = sizeof(d.. 2018. 1. 23.
백준 14500 테트로미노 #pragma warning(disable:4996) #include#include#define MAX 502using namespace std; int map[MAX][MAX];bool visit[MAX][MAX];int n, m, tmp;int dx[4] = { 0,0,1,-1 };int dy[4] = { 1,-1,0,0 }; int dfs(int x, int y, int d) {if (d == 4) return map[x][y]; visit[x][y] = 1;int ret = 0;for (int i = 0; i < 4; i++) {int nx = x + dx[i];int ny = y + dy[i];if (nxm) continue;if (visit[nx][ny]) continue;tmp = dfs(n.. 2017. 10. 21.
백준 12100 2048(Easy) #include #include #define MAX 25 using namespace std; int n;int map[MAX][MAX];int ret; void merge(int d) {queue q;int cnt = 0; switch (d) {case 0:for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {if (map[j][i] != 0) q.push(map[j][i]);map[j][i] = 0;}int idx = 0;int data = 0; while (!q.empty()) {data = q.front();q.pop();if (map[idx][i] == 0)map[idx][i] = data;else if (map[idx][i] == data) .. 2017. 10. 21.
백준 14502 연구소 #pragma warning(disable:4996) #include#include#include#include #define MAX 8 using namespace std; int map[MAX][MAX];int n, m;bool visit[MAX][MAX];int max_value;int dx[4] = { 0, 0, 1, -1 };int dy[4] = { 1, -1, 0, 0 }; vector virus; void input() {scanf("%d %d", &n, &m);for(int i=0; i= m || map[nx][ny] != 0) continue;map[nx][ny] = 2;q.push(make_pair(nx, ny));}}} void dfs(int x, int y, int d) {map[x.. 2017. 10. 21.