
문자를 전부 누르는데 걸리는 시간을 구하는 문제입니다. 각 문자에 대한 시간과 집합을 설정해주고 시간을 계산해서 더해주고, 집합이 같으면 w만큼 추가해주면 됩니다. 특징으로는 공백은 연속으로 입력되도 w를 추가해주지 않아도 됩니다. #include #include #include #include #include using namespace std; int main(int argc, char* argv[]) { int p, w; int now = 0; int result = 0; int num[2][27] = { { 1, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 1, 2, 3, 4 }, { 1, 2, 2, 2, 3, 3, 3, 4..

a부터 b까지의 수 중에서 같은 숫자가 안 들어가는 수들의 개수를 구하는 문제입니다. 0~5000까지 미리 체크한 뒤에 카운트를 해주어서 결과를 도출했습니다. 테스트케이스의 종료에 대한 내용이 없으므로 EOF를 받으면 종료해줍니다. #include #include #include #include using namespace std; int main(int argc, char* argv[]) { bool flag; bool arr[5010] = { false, }; int num; int count = 0; int result; int x, y; int a[10]; string temp; for (int i = 0; i < 5010; ++i) { flag = false; num = i; memset(a, ..

암호화된 문자를 원래 문자로 바꾸는 문제입니다. 암호화하는걸 반대로 복호화해주는 식으로 풀어주면 됩니다. 먼저 왼쪽->오른쪽, 오른쪽->왼쪽 으로 읽어서 만들어진 문자를 다시 n열의 배열모양으로 바꿔줍니다. 그리고 배열을 세로로 읽으면 원래 문자가 나옵니다. #include #include #include #include using namespace std; int main(int argc, char* argv[]) { int n; int c = 0; int rem; int cycle; bool flag = false; char map[20][200]; string s; string result = ""; cin >> n; cin >> s; memset(map, ' ', sizeof(map)); cycl..

시계의 시침과 분침이 가능한 경우인지 불가능한지 찾는 문제입니다. 시침은 30도 마다 1시간씩 증가합니다. 이는 15도는 30분을 의미하며 5도는 10분을 의미합니다. 이처럼 분침을 결정하는 시침의 요소는 30분에서 결정됩니다. 그래서 시침 % 30을 해주므로서 분침과 비교할 수 있습니다. 0~29의 값이 분침을 나타내며 이는 360 / 30을 하면 12가 나옵니다. 0~29의 * 12를 하게 되면 분침의 각도가 나오는것으로 판단할 수 있습니다. #include using namespace std; int main(int argc, char *argv[]) { int x, y; int z; cin >> x >> y; z = x % 30; if (z * 12 == y) { cout

구현 문제입니다. 3가지 조건을 신경써서 구현해주면 됩니다. 1. 모음을 한가지 이상 포함하기. 2. 모음 또는 자음이 3개 연속 오면 안됨. 3. 같은 글자가 연속해서 오면 안됨. 하지만 oo, ee는 가능 #include #include using namespace std; int main(int argc, char *argv[]) { bool m;// 모음 1번 입력됬는지 bool check;// 이전 결과가 모음, 자음 bool flag;// 결과 bool con; // 이번 결과가 모음인지, 자음인지 int count;// 3연속 string s; char pre; char v[5] = { 'a', 'e', 'i', 'o', 'u' }; while (1) { m = false; flag = fa..

숫자가 입력되어 있는곳은 상하좌우 대각선 방면에 지뢰의 합이 숫자의 개수와 같습니다. 숫자가 있는곳의 상하좌우 대각선 방면에 현재 숫자를 더해주어서 최종적으로 9를 넘으면 M으로, 지뢰면 *, 그 외에는 더해진 수를 출력하면 됩니다. #include #include #include #include #define MAX 987654321 using namespace std; int n; char input[1010][1010]; int map[1010][1010]; int moveX[8] = { -1, -1, -1, 0, 0, 1, 1, 1 }; int moveY[8] = { -1, 0, 1, -1, 1, -1, 0, 1 }; string s; int main(int argc, char* argv[]) {..

브루트포스로 문제를 해결했습니다. 겹치지 않는 부분이 가장 적은 곳들의 인덱스를 출력했습니다. #include #include #include #include #define MAX 987654321 using namespace std; int main(int argc, char* argv[]) { bool flag; int n; int count; int x, y; int result = MAX; char map[5][7][50]; string s; memset(map, 0, sizeof(map)); cin >> n; for (int i = 0; i > s; for (int k = 0; k < 7; ++k) { map[j..

두개의 string을 받고 일치하는 부분으로 두 단어가 교차하게 출력하는 문제입니다. 첫번째 문자를 a 두번째 문자를 b라고 했을 때 a를 기준으로 순차적으로 비교해서 우선적으로 맞는것을 기준으로 출력합니다. find 함수를 통해서 인덱스 번호를 알아냈습니다. #include #include #include #include using namespace std; int main(int argc, char* argv[]) { int x, y; char map[40][40]; string s1; string s2; memset(map, '.', sizeof(map)); cin >> s1; cin >> s2; for (int i = 0; i < s1.length(); ++i) { if (s2.find(s1[i])