본문 바로가기
반응형

PS 문제 풀이/Jungol101

[Jungol] 정올 1331 문자마름모 출처: http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=2073&sca=20 Approach 아래와 같이 상단 중간 위치를 기준으로 마름모를 형성합니다. - 아스키 코드 A(65) ~ Z(90)까지 값을 채워갑니다. 초기 N (가장 큰 마름모의 한 변의 길이) 홀/짝과 관계없이 마름모 한 변의 길이는 안쪽으로 갈수록 1씩 감소하므로, 제일 중앙 위치(map[N][N])는 4가지 방향으로 돌지않고 값을 대입하면 됩니다. #include const int MAX_N = 100 + 5; int N, x, y, val; int map[MAX_N * 2][MAX_N * 2]; const int dx[] = { 0, 1, 1, -1, -1 }; const int d.. 2021. 3. 17.
[Jungol] 정올 1009 각 자리수의 역과 합(Number Reverse) 출처: http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=288&sca=2040 Approach 문자열을 입력받아 길이 len(string)를 구해서 뒤에서 부터 문자를 다시 저장합니다 출력할 때는 아래와 같이 35603200 → 00230653 ( leading zero가 발 생할 수 있는 숫자를 주의합니다.) Input 146160490 35603200 175268372 0 Output 94061641 31 230653 19 273862571 41 #include int len(const char* str) { int ret = 0; for (;;) { if (str[ret] == '\0') break; ret++; } return ret; } int .. 2021. 3. 17.
[Jungol] 정올 1692 곱셈 출처: http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=965&sca=20 Approach ① 두번째 3자리 자연수를 나머지 연산을 통해서 각 자리수를 구한 후, A와 곱해서 (3), (4), (5) 결과를 쉽게 구할 수 있습니다. ② (6) = (3) × 1 + (4) × 10 + (5) × 100이므로 규칙 이용 #include int N, M, ans; int use[20]; inline int min(int A, int B) { return A < B ? A : B; } inline int abs(int x) { return x < 0 ? -x : x; } void DFS(int first, int second, int depth, int move.. 2021. 3. 17.
[Jungol] 정올 1097 앞뒤 같은 제곱 출처: http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=377&sca=2020 Approach 앞뒤 같은 수를 회문(Palindrome)이라고 합니다. 회문 여부를 확인할 때는 양끝에서 진행하여 범위를 좁혀오며 확인할 수 있습니다. ex) 1 2 3 2 1 (즉, 양끝(i, j)에서 i++ j-- 처리하여 각각 →, ← 방향으로 이동.) 1 ≤ N ≤ 300 범위 수를 제곱한 수를 P (= N2 )라고 했을 때, P를 B진법 수로 만들기 위해 Horner's method를 역으로 적용 (P를 B진법 수로 만든 결과는 문자를 포함할 수 있다.) - 각 Test Case마다 초기화 유의 - N은 회문이 아니어도 P는 회문이어야 합니다. #include.. 2021. 3. 17.
[Jungol] 정올 2071 파스칼 삼각형 출처: http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1335&sca=2020 Approach 종류 1과 같이 배열에 저장을 한 후 m의 값에 따라 출력을 바꾸면 된다. 종류 2의 경우는 배열의 아래쪽부터 출력을 하면 된다. 종류 3의 경우는 각 위치에 출력되는 배열의 번호를 적어놓고 생각해 보자. 종류 1 각 줄의 첫번째와 마지막 숫자 = 1입니다 3번째 줄 부터는 가운데 영역은 ▶ map[i][j] = map[i - 1][j - 1] + map[i - 1][j];와 같이 구현할 수 있습니다. 정류 2 종류 1을 구현한다면 종류 2는 마지막 행부터 출력할 수 있습니다. 이때, 앞쪽에 공백 표시에 유의 종류 3 아래와 같이 "종류 1"의 배열 정보를 읽.. 2021. 3. 17.
[Jungol] 정올 2538 PATRIK 출처: [Jungol] 정올 2538 PATRIK Approach Q) 중간에 자신들보다 큰 사람이 없는 경우 서로 마주볼 수 있는 한 쌍입니다. A) 사람이 다음과 같이 서있을 때, [3 3 1] 양 끝에 위치한 『3』과 『1』은 서로를 볼 수 있을까? 왼쪽 『3』 ≥ 중간 『3』 이지만 오른쪽 『1』 < 중간 『3』 이므로, 결과적으로 서로 볼 수 없습니다. ▶ [스택] Stack 이란? [스택] Stack 이란? Stack 이란? 스택 (Stack) 특징을 가장 잘 나타내는 표현은 후입선출(Last In First Out, LIFO) 이다. ▶ 스택(Stack)은 삽입(push)과 삭제(pop)이 한쪽 끝에서만 일어나는 구조 가장 상단에 위치한 원소를 가리. zoosso.tistory.com Inp.. 2021. 3. 17.
[Jungol] 정올 1328 빌딩 출처: http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=607&sca=3020 Approach 원래 빌딩에서는 내려다보면 낮은 높이의 빌딩도 보이겠지만 해당 문제는 빌딩 옥상에서 정면만 응시하는 것입니다. 그렇기에 Hi < Hj 일 경우, i번 빌딩에서 j번 빌딩을 볼 수 있다. ( i < j ) - 첫번째 입력 Data는 Stack에 비교 데이터가 없으므로 push (스택이 비워져 있는 경우에는 입력 데이터 push) - 입력 데이터 push 전에 스택이 비워져 있지 않은 경우 입력 데이터 값(높이) 보다 작은 값(top)들 pop() 처리 이때, pop() 되는 빌딩들이 볼 수 있는 가장 가까운 빌딩인 현재 입력 데이터 순서입니다. ▶ [스택] Sta.. 2021. 3. 17.
[Jungol] 정올 3123 키로거(Keylogger) 출처: http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=2405&sca=50&page=21 Approach 이중 연결 리스트를 만들어 cur 포인터를 관리합니다. ① ''인 경우 이동 가능 cur를 오른쪽으로 이동 ③ '-'인 경우 지울 수 있다면 cur의 데이터를 지우고 cur를 왼쪽 노드로 이동 ④ 그 외(입력)의 경우 cur의 next에 새로운 노드를 추가하고 cur가 새로운 노드를 참조하도록 한다. ※ 라이브러리를 이용한 풀이: [BOJ] 5397 키로거 [BOJ] 백준 5397 키로거 출처: https://www.acmicpc.net/problem/5397 Input 2 < Cd- ThIsIsS3Cr3t Output BAPC ThIsIsS.. 2021. 3. 17.
[Jungol] 정올 3106 진법 변환 출처: http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=2375&sca=2040 Approach 11 진법 부터는 0 ~ 9, A ~ Z 까지 대문자를 사용합니다. (수가 int 범위를 초과할 수 있음에 유의) ▶ A 진법의 수 → 10진법 수 → B진법 수 ※ 변환 과정에서 Horner’s method 이용 2진수 1101을 자리수별 가중치를 주어 10진수로 나타내면 아래와 같다. 1101 = 0 * 24 + 1 * 23 + 1 * 22 + 0 * 21 + 1 이므로 = (((0*2 + 1) * 2 + 1) * 2 + 0) * 2 + 1 = 1310 #define _CRT_SECURE_NO_WARNINGS #include typedef long .. 2021. 3. 17.
[Jungol] 정올 2068 숫자의 종류 출처: http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1332&sca=50&page=11 Approach 최대 입력 개수가 1000개 이므로 배열 map[1000]을 등장했던 숫자들을 보관합니다. 새로운 수가 입력될 때마다 map[]에서 이미 존재하는 수인지 확인합니다. #define _CRT_SECURE_NO_WARNINGS #include int cnt, answer, N, map[1000]; int check(int num) { for (int i = 0; i < cnt; ++i) { if (num == map[i]) return 1; } return 0; } int main(void) { // freopen("input.txt", "r",.. 2021. 3. 17.
반응형