본문 바로가기
반응형

PS 문제 풀이/Jungol101

[Jungol] 정올 2501 모양 정돈 출처: http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1762&sca=50 Approach 정돈된 최종 모양은 총 6가지 입니다. order[] = [1 2 3] / [1 3 2] / [2 1 3] / [2 3 1] / [3 1 2] / [3 2 1] 위의 경우 [동그라미, 네모, 세모]로 [3 2 1] 구성으로 모여있다고 볼 수 있습니다. 각각의 경우를 구성하기 위해 바꾸기 횟수를 구해보면 됩니다. ① 6가지 경우 중 order[]를 하나 정해놓고 ② 해당 위치에 있는 다른 모양의 개수를 세어서 교환해야 하는 횟수를 계산 시뮬레이션 배치하고자하는 순서 order[] = [3 2 1]일 때, arr[] = [1 3 3 2 1 1 3 2] → cnt[] .. 2021. 3. 17.
[Jungol] 정올 1040 자리올림 횟수 찾기 출처: http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=319&sca=50 Approach 9999 + 111 = 10110 → 올림수 처리를 위해 "carry" 변수 이용 (초기값 = 0) → 좀 더 긴 자릿수에 맞추어 Leading Zero를 고려합니다. 9999 + 0111 1 + 9 + 0(= carry) = 10 → carry = 1 1 + 9 + 1(= carry) = 11 → carry = 1 1 + 9 + 1(= carry) = 11 → carry = 1 0 + 9 + 1(= carry) = 10 → carry = 1 #define _CRT_SECURE_NO_WARNINGS #include #include #include char A.. 2021. 3. 17.
[Jungol] 정올 1307 문자사각형1 출처: http://www.hancom.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=2071&sca=20 Approach 열을 우선으로 하여 바깥 for문을 작성하되 행과 열 모두 n부터 1까지로 순서를 정해서 채워나가면 된다. 채워야 할 배열은 정수가 아닌 문자배열로 선언하고 int num = 1; 대신 char ch = 'A'; 와 같이 문자로 선언하고 초기화 해서 처리하면 된다. define _CRT_SECURE_NO_WARNINGS #include int N; char board[100][100]; int main(void) { // freopen("input.txt", "r", stdin); scanf("%d", &N); // 배열 채우기 char ch .. 2021. 3. 17.
[Jungol] 정올 1274 2진수를 10진수로... 출처: http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=557&sca=50 Approach ※ 비트마스크 (Bitmask) 비트마스크 (Bitmask) 비트마스크 정수의 이진수 표현(Bit)을 자료 구조로 쓰는 기법 현대의 모든 CPU는 이진수를 이용해도 모든 자fy 표현 내부적으로 이진수를 사용하는 컴퓨터들은 이진법 관련 연산들을 아주 빨리 zoosso.tistory.com 보수의 정의 ① N자리 A진법 수 K가 있을 때 A의 보수는 : ▶ AN - K ▶ A-1의 보수를 구하고 1을 더한다. ② N자리 A진법 수 K가 있을 때 A-1의 보수는 : ▶ AN - 1 - K ex) 110111012의 1의 보수 = 001000102 ex) 8(N)자.. 2021. 3. 17.
[Jungol] 정올 1262 긴 자릿수 곱셈 출처: http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=545&sca=5090 Approach 부호처리 부호의 경우 어느 한쪽만 음수인 경우 곱셈결과에 부호를 붙이면 됩니다. 단, 곱셈처리된 피연산자 영역을 전달하기 위해 아래와 같이 인자를 전달합니다. if) a가 음수라면 a + 1, 양수이면 a + 0으로 시작주소가 던져집니다. (b도 마찬가지) 곱셈 처리 앞에서 부터 이중 for문으로 A[i] 각 자리와 B[j]들을 곱한 결과를 ans[]에 누적합니다. 뒤에서 부터 ans[]에 누적된 값들을 아래와 같이 처리합니다. #include int strlen(const char* s, int len = 0){ while (s[len]) len++; .. 2021. 3. 16.
[Jungol] 정올 1374 긴 자릿수 덧셈 뺄셈 출처: http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=649&sca=50 Approach Input Data가 200자리이기 때문에 정수형으로 받을 수 없습니다. 두 수를 각각 숫자 배열의 맨 끝(200번)부터 차례대로 넣습니다. 뺄셈 연산을 위해 큰 수를 첫번째 배열에, 달느 수를 두번째 배열에 넣습니다. ex) 6789, 12345 ① 최대 배열 크기 200에 맞추어 Data를 우측배열 시킵니다. Input Data를 문자열로 받았기 때문에 int형으로 전환 ② ± 연산에 따라 값을 처리합니다. +: 두 수를 더해서 10이상인 경우 다음 자리에 +1 처리. -: 두 수를 빼서 음수인 경우 앞자리에서 도움수를 받습니다. (A ≥ B 이므로 마지.. 2021. 3. 16.
[Jungol] 정올 1035 최대값 출처: http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=314&sca=50 Approach 배열을 선형탐색하면서 최대값과 위치를 갱신합니다. #define _CRT_SECURE_NO_WARNINGS #include int main(void){ // freopen("input.txt", "r", stdin); // 여기서부터 작성 int answer = 0, idx = 0, temp; for (int i = 1; i 2021. 3. 16.
[Jungol] 정올 1936 꼭지점 개수 출처: http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1209&sca=99&page=10 Approach 가로/세로 줄이 채워지는 규칙을 분석하여 N - iteration의 꼭지점 개수를 알 수 있습니다. 새로 만들어지는 검은 점의 개수보다 N번째에 총 몇개의 꼭지점이 있는지 확인합니다. ※ 1 iteration을 첫번째 항으로 가정 ① 9 = (2 + 1) * (2 + 1) ② 25 = (4 + 1) * (4 + 1) ③ 81 = (8 + 1) * (8 + 1) ④ 289 = (16 + 1) * (16 + 1) ⑤ 1089 = (32 + 1) * (32 + 1) #define _CRT_SECURE_NO_WARNINGS #include typedef l.. 2021. 3. 16.
[Jungol] 정올 1839 배부른 돼지 출처: http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1112&sca=50 Approach ① 초기 left = 3, right = 9 ② 먹이의 횟수를 만족(Y)하면서 기존 right값보다 작으면 right 값 갱신 불만족(N)할 때, 기존 left 값보다 큰 경우 left 값 갱신 ③ left > right이면 모순 그렇지 않으면 left 값 출력 ※ n = 0일 때, 모순으로 가준하여 "F" 출력 Sample Case 1 시뮬레이션 초기 left = 3, right = 9 4 N → left = 5 | right = 9 → "최소 5회 이상 먹이를 줘야 한다." 7 Y → left = 4 | right = 7 → "7번까지만 주어도 만족한다." 5.. 2021. 3. 16.
[Jungol] 정올 1942 하얀모자 출처: http://www.hancom.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1215&sca=50 Approach - 한 명의 입장 2 2 2 → 첫번째 사람 입장에서 자신을 제외하고 2명이 하얀모자를 사용하고 있다고 합니다. 그렇다면 전체 인원 중에서 하얀모자를 사용하고 있는 사람은 본인이 포함(2 + 1)되거나 아닌 경우(2)로 나누어 집니다. - 최소값으로 지목한 사람의 입장 case: [0 0 1 0 0 1] → 2 2 1 2 2 1 : 자신을 제외하고 하얀모자를 사용하고 있는 경우는 『1』이며 실제 하얀모자를 사용하고 있는 사람 수 『1』 + 1 입니다. case: [1 1 1 1 0 1] → 4 4 4 4 5 4 : 최솟값 『4』 이며, 실제 하.. 2021. 3. 15.
반응형