diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..48b3086 --- /dev/null +++ b/.clang-format @@ -0,0 +1,5 @@ +# yaml-language-server: $schema=https://json.schemastore.org/clang-format-21.x.json +--- +BasedOnStyle: GNU +IndentWidth: 2 +--- diff --git a/.gitignore b/.gitignore index b827212..ead3e7d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -output + output *.run diff --git a/.zed/config.json b/.zed/config.json new file mode 100644 index 0000000..a50344e --- /dev/null +++ b/.zed/config.json @@ -0,0 +1,77 @@ +{ + "icon_theme": { + "mode": "dark", + "light": "Zed (Default)", + "dark": "Zed (Default)", + }, + "lsp": { + "clangd": { + "fetch": { + "pre_release": true, + }, + }, + }, + "agent": { + "default_model": { + "provider": "zed.dev", + "model": "claude-sonnet-4-6", + "enable_thinking": true, + "effort": "high", + }, + "favorite_models": [], + "model_parameters": [], + }, + "auto_install_extensions": { + "git-firefly": true, + "nix": true, + "rust": true, + "toml": true, + }, + "autosave": "on_focus_change", + "buffer_font_size": 15, + // "experimental.theme_overrides": { + // "background": "#FDF7F9", + // "border": "#F2E6EA", + // "border.variant": "#00000000", + // "drop_target.background": "#8165701a", + // "editor.active_line.background": "#8165700f", + // "editor.active_line_number": "#191013", + // "editor.background": "#00000000", + // "editor.gutter.background": "#00000000", + // "editor.highlighted_line.background": "#8165701a", + // "editor.indent_guide": "#F2E6EA", + // "editor.indent_guide_active": "#E6D5DB", + // "editor.line_number": "#A38F96", + // "element.active": "#81657029", + // "element.hover": "#8165700f", + // "element.selected": "#8165701a", + // "elevated_surface.background": "#FDF7F9", + // "ghost_element.active": "#8165701a", + // "ghost_element.background": "#00000000", + // "ghost_element.hover": "#8165700f", + // "ghost_element.selected": "#81657024", + // "hint.background": "#F7EBEE", + // "panel.background": "#00000000", + // "panel.focused_border": "#00000000", + // "panel.indent_guide": "#F2E6EA", + // "panel.indent_guide_active": "#D9C4CC", + // "panel.indent_guide_hover": "#E6D5DB", + // "scrollbar.thumb.background": "#A38F9680", + // "scrollbar.track.background": "#00000000", + // "scrollbar.track.border": "#00000000", + // "status_bar.background": "#FDF7F9", + // "surface.background": "#FDF7F900", + // "tab.active_background": "#8165701a", + // "tab.inactive_background": "#00000000", + // "tab_bar.background": "#00000000", + // "terminal.background": "#00000000", + // "title_bar.background": "#FDF7F9", + // "toolbar.background": "#00000000", + // }, + "theme": { + "dark": "Catppuccin Mocha (pink) - No Italics", + "light": "One Light", + "mode": "dark", + }, + "ui_font_size": 16, +} diff --git a/04/ex01.c b/04/ex01.c new file mode 100644 index 0000000..867149a --- /dev/null +++ b/04/ex01.c @@ -0,0 +1,15 @@ +#include + + +int main() { + int A, B; + printf("정수 A : "); + scanf("%d", &A); + printf("정수 B : "); + scanf("%d", &B); + + if (A % B == 0) { + printf("정수 B 는 정수 A의 약수입니다."); + } + return 0; +} diff --git a/04/ex02.c b/04/ex02.c new file mode 100644 index 0000000..f1b98b0 --- /dev/null +++ b/04/ex02.c @@ -0,0 +1,21 @@ +#include + +int main() { + int a,b,c,d; + + printf("4개의 정수 입력 : "); + scanf("%d %d %d %d", &a, &b, &c, &d); + + if (a > b && a > c && a > d) { + printf("가장 큰 수 : %d", a); + } + else if (b > a && b > c && b > d) { + printf("가장 큰 수 : %d", b); + } + else if (c > a && c > b && c > d) { + printf("가장 큰 수 : %d", c); + } + else { + printf("가장 큰 수 : %d", d); + } +} \ No newline at end of file diff --git a/04/ex03.c b/04/ex03.c new file mode 100644 index 0000000..c686077 --- /dev/null +++ b/04/ex03.c @@ -0,0 +1,19 @@ +#include + +int main() { + int a,b,c; + + printf("3개의 정수 입력 : "); + scanf("%d %d %d", &a, &b, &c); + + // 입력한 3개의 숫자중 같은 숫자 갯수 출려r + if (a == b && b == c) { + printf("입력한 3개의 숫자 중 같은 숫자 : 3개"); + } + else if (a == b || a == c || b == c) { + printf("입력한 3개의 숫자 중 같은 숫자 : 2개"); + } + else { + printf("입력한 3개의 숫자 중 같은 숫자 : 0개"); + } +} \ No newline at end of file diff --git a/04/ex04.c b/04/ex04.c new file mode 100644 index 0000000..b7d0b40 --- /dev/null +++ b/04/ex04.c @@ -0,0 +1,21 @@ +#include + +int main() { + int a,b; + + printf("정수 2개 입력 : "); + scanf("%d %d", &a, &b); + + if (a % 2 == 0 && b % 2 == 0) { + printf("짝수의 개수 : 2개\n"); + printf("홀수의 개수 : 0개"); + } + else if (a % 2 == 0 || b % 2 == 0) { + printf("짝수의 개수 : 1개\n"); + printf("홀수의 개수 : 1개"); + } + else { + printf("짝수의 개수 : 0개\n"); + printf("홀수의 개수 : 2개"); + } +} \ No newline at end of file diff --git a/04/ex05.c b/04/ex05.c new file mode 100644 index 0000000..9a10c26 --- /dev/null +++ b/04/ex05.c @@ -0,0 +1,15 @@ +#include + +int main() { + int a,b,c; + + printf("삼각형 세 변의 값 입력: "); + scanf("%d %d %d", &a, &b, &c); + + if (a + b > c && a + c > b && b + c > a) { + printf("삼각형 가능 여부 : yes"); + } + else { + printf("삼각형 가능 여부 : no"); + } +} \ No newline at end of file diff --git a/04/ex06.c b/04/ex06.c new file mode 100644 index 0000000..047f480 --- /dev/null +++ b/04/ex06.c @@ -0,0 +1,20 @@ +#include + +int main() { + int a,b; + + printf("정수 2개 입력\n"); + printf("정수 A: "); + scanf("%d", &a); + printf("정수 B: "); + scanf("%d", &b); + + if (a > b) { + printf("정수 A가 정수 B보다 크다."); + } else if (a == b){ + printf("정수 A와 정수 B가 같다."); + } + else { + printf("정수 B가 정수 A보다 크다."); + } +} diff --git a/04/ex07.c b/04/ex07.c new file mode 100644 index 0000000..0eed8f8 --- /dev/null +++ b/04/ex07.c @@ -0,0 +1,15 @@ +#include + +int main() { + int pw; + + printf("비밀번호 입력 : "); + scanf("%d", &pw); + + if (pw == 1234) { + printf("비밀번호가 맞습니다."); + } + else { + printf("비밀번호가 틀립니다."); + } +} diff --git a/04/ex08.c b/04/ex08.c new file mode 100644 index 0000000..1e1af16 --- /dev/null +++ b/04/ex08.c @@ -0,0 +1,31 @@ +#include + +int main() { + int month; + printf("월(Month) 입력 : "); + scanf("%d", &month); + + switch (month) { + case 1: + case 3: + case 5: + case 7: + case 8: + case 10: + case 12: + printf("%d월은 31일까지 있습니다", month); + break; + case 4: + case 6: + case 9: + case 11: + printf("%d월은 30일까지 있습니다", month); + break; + case 2: + printf("%d월은 28일까지 있습니다", month); + break; + default: + printf("잘못된 월입니다."); + break; + } +} diff --git a/04/ex09.c b/04/ex09.c new file mode 100644 index 0000000..cee6913 --- /dev/null +++ b/04/ex09.c @@ -0,0 +1,34 @@ +#include + +int main() { + int year, month, days; + + printf("<윤년 계산>\n"); + printf("년도 입력(year) : "); + scanf("%d", &year); + printf("월(Month) 입력 : "); + scanf("%d", &month); + + int isLeap = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); + + switch (month) { + case 1: case 3: case 5: case 7: + case 8: case 10: case 12: + days = 31; + break; + case 4: case 6: + case 9: case 11: + days = 30; + break; + case 2: + days = isLeap ? 29 : 28; + break; + default: + printf("잘못된 월입니다. (1~12 사이 입력)\n"); + return 1; + } + + printf("%d년 %d월은 %d일까지 있습니다.\n", year, month, days); + + return 0; +} diff --git a/04/ex10.c b/04/ex10.c new file mode 100644 index 0000000..2ec4cca --- /dev/null +++ b/04/ex10.c @@ -0,0 +1,33 @@ +#include + +int main() { + int a,b; + char operator; + + printf("<두 개의 정수와 사칙연산자 입력>\n"); + printf("정수 2개 입력 : "); + scanf("%d %d", &a, &b); + printf("연산자입력(+, -, *, /) : "); + scanf(" %c", &operator); + + printf("%d %c %d를 수행합니다.\n", a, operator, b); + printf("결과 : "); + + switch (operator) { + case '+': + printf("%d", a + b); + break; + case '-': + printf("%d", a - b); + break; + case '*': + printf("%d", a * b); + break; + case '/': + printf("%.1lf", a / (double)b); + break; + default: + printf("잘못된 연산자입니다.\n"); + break; + } +} diff --git a/index.js b/index.js new file mode 100644 index 0000000..4fec967 --- /dev/null +++ b/index.js @@ -0,0 +1,59 @@ +const readline = require('readline'); + +const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout +}); + +rl.on('line', (line) => { + if (!line) return; + const k = BigInt(line); + + let a, b, c, op1, op2; + + // k = a^2 + b^2 - c^2 구조로 풀기 + // k - a^2 = b^2 - c^2 = (b-c)(b+c) + + // 계산의 편의를 위해 a=1 또는 a=2를 선택 + // 1. a=1 선택 + a = 1n; + let target = k - (a * a); + + // target이 홀수라면: (n+1)^2 - n^2 = 2n + 1 = target + // 2n = target - 1 => n = (target - 1) / 2 + if (target % 2n !== 0n) { + let n = (target - 1n) / 2n; + b = n + 1n; + c = n; + op1 = '+'; + op2 = '-'; + } + // target이 짝수라면: a=2로 변경하여 target을 홀수로 만듦 + else { + a = 2n; + target = k - (a * a); + let n = (target - 1n) / 2n; + b = n + 1n; + c = n; + op1 = '+'; + op2 = '-'; + } + + // 만약 c가 0이 되는 경우 (target이 1인 경우) 등 예외 처리 + // 문제 조건 1 <= a, b, c를 맞추기 위해 조정 + if (c === 0n) { + // k = a^2 + b^2 - c^2 가 안되면 다른 조합 시도 (k는 충분히 큼) + // 보통 k가 1 이상이므로 위 로직에서 a, b, c >= 1을 만족하는 해가 대부분 존재함 + // k=1인 경우: 1 = 1^2 + 1^2 - 1^2 (1 + 1 - 1) + if (k === 1n) { + console.log("1 + 1 - 1"); + } else { + // 일반적인 출력 + console.log(`${a} ${op1} ${b} ${op2} ${c}`); + } + } else { + console.log(`${a} ${op1} ${b} ${op2} ${c}`); + } + + rl.close(); +}); diff --git a/layer7/awesome.c b/layer7/awesome.c new file mode 100644 index 0000000..af04a0a --- /dev/null +++ b/layer7/awesome.c @@ -0,0 +1,14 @@ +#include + +int factorial(int n) { + if (n <= 1) return 1; + + return n * factorial(n-1); +} + +int main() { + int n; + scanf("%d", &n); + printf("%d", factorial(n)); + return 0; +} diff --git a/layer7/fantastic.c b/layer7/fantastic.c new file mode 100644 index 0000000..32d1af6 --- /dev/null +++ b/layer7/fantastic.c @@ -0,0 +1,6 @@ +#include + +int main() { + + return 0; +} diff --git a/layer7/sans.c b/layer7/sans.c new file mode 100644 index 0000000..14c8f13 --- /dev/null +++ b/layer7/sans.c @@ -0,0 +1,35 @@ +#include + +int main() { + int count; + scanf("%d", &count); + int n[count]; + + // for (int i = 0; i < count; i++) { + // scanf("%d", &n[i]); + // } + + // for (int i = 0; i <= count; i++) { + // int sum = 0; + // for (int j = 0; j <= i; j++) { + // sum += n[j]; + // } + // if (i == count){ + // printf("\n"); + // continue; + // } + // printf("%d ", sum); + // } + // + int sum = 0; + for (int i = 0; i < count; i++) { + scanf("%d", &n[i]); + sum += n[i]; + n[i] = sum; + } + + for (int i = 0; i < count; i++) printf("%d ", n[i]); + printf("\n"); + + return 0; +} diff --git a/output/a_blazxf b/output/a_blazxf new file mode 100755 index 0000000..d3f4002 Binary files /dev/null and b/output/a_blazxf differ diff --git a/output/a_ckrmpy b/output/a_ckrmpy new file mode 100755 index 0000000..4ec81c8 Binary files /dev/null and b/output/a_ckrmpy differ diff --git a/output/a_etvxub b/output/a_etvxub new file mode 100755 index 0000000..a7bb847 Binary files /dev/null and b/output/a_etvxub differ diff --git a/output/a_hkaxbe b/output/a_hkaxbe new file mode 100755 index 0000000..d3f4002 Binary files /dev/null and b/output/a_hkaxbe differ diff --git a/output/a_iewwff b/output/a_iewwff new file mode 100755 index 0000000..96baf8b Binary files /dev/null and b/output/a_iewwff differ diff --git a/output/a_kcgxvw b/output/a_kcgxvw new file mode 100755 index 0000000..a7bb847 Binary files /dev/null and b/output/a_kcgxvw differ diff --git a/output/a_uendwc b/output/a_uendwc new file mode 100755 index 0000000..a7bb847 Binary files /dev/null and b/output/a_uendwc differ diff --git a/output/a_ybdfvl b/output/a_ybdfvl new file mode 100755 index 0000000..30ace4a Binary files /dev/null and b/output/a_ybdfvl differ diff --git a/output/awesome_rcabkw b/output/awesome_rcabkw new file mode 100755 index 0000000..c6e3a69 Binary files /dev/null and b/output/awesome_rcabkw differ diff --git a/output/ex01_fclfyf b/output/ex01_fclfyf new file mode 100755 index 0000000..53d1ed6 Binary files /dev/null and b/output/ex01_fclfyf differ diff --git a/output/ex01_ffjbjb b/output/ex01_ffjbjb new file mode 100755 index 0000000..a3c1639 Binary files /dev/null and b/output/ex01_ffjbjb differ diff --git a/output/ex01_ytzccs b/output/ex01_ytzccs new file mode 100755 index 0000000..53d1ed6 Binary files /dev/null and b/output/ex01_ytzccs differ diff --git a/output/ex02 b/output/ex02 new file mode 100755 index 0000000..53d5874 Binary files /dev/null and b/output/ex02 differ diff --git a/output/ex02_mfwhia b/output/ex02_mfwhia new file mode 100755 index 0000000..3e7ef88 Binary files /dev/null and b/output/ex02_mfwhia differ diff --git a/output/ex02_qdtsmx b/output/ex02_qdtsmx new file mode 100755 index 0000000..3e7ef88 Binary files /dev/null and b/output/ex02_qdtsmx differ diff --git a/output/ex02_wwnjhw b/output/ex02_wwnjhw new file mode 100755 index 0000000..3e7ef88 Binary files /dev/null and b/output/ex02_wwnjhw differ diff --git a/output/ex02_ypeulo b/output/ex02_ypeulo new file mode 100755 index 0000000..e429b94 Binary files /dev/null and b/output/ex02_ypeulo differ diff --git a/output/ex03_jsaztf b/output/ex03_jsaztf new file mode 100755 index 0000000..6af9075 Binary files /dev/null and b/output/ex03_jsaztf differ diff --git a/output/ex03_lctjsv b/output/ex03_lctjsv new file mode 100755 index 0000000..6af9075 Binary files /dev/null and b/output/ex03_lctjsv differ diff --git a/output/ex03_lrddkr b/output/ex03_lrddkr new file mode 100755 index 0000000..c5a85d0 Binary files /dev/null and b/output/ex03_lrddkr differ diff --git a/output/ex03_mrnfuc b/output/ex03_mrnfuc new file mode 100755 index 0000000..6af9075 Binary files /dev/null and b/output/ex03_mrnfuc differ diff --git a/output/ex03_qdbdka b/output/ex03_qdbdka new file mode 100755 index 0000000..881b21d Binary files /dev/null and b/output/ex03_qdbdka differ diff --git a/output/ex03_upvrpk b/output/ex03_upvrpk new file mode 100755 index 0000000..6af9075 Binary files /dev/null and b/output/ex03_upvrpk differ diff --git a/output/ex03_yuhwui b/output/ex03_yuhwui new file mode 100755 index 0000000..6af9075 Binary files /dev/null and b/output/ex03_yuhwui differ diff --git a/output/ex03_zebfne b/output/ex03_zebfne new file mode 100755 index 0000000..1945744 Binary files /dev/null and b/output/ex03_zebfne differ diff --git a/output/ex03_ztxvbg b/output/ex03_ztxvbg new file mode 100755 index 0000000..6af9075 Binary files /dev/null and b/output/ex03_ztxvbg differ diff --git a/output/ex05 b/output/ex05 new file mode 100755 index 0000000..568529d Binary files /dev/null and b/output/ex05 differ diff --git a/output/ex06_dwjfya b/output/ex06_dwjfya new file mode 100755 index 0000000..46d2c9d Binary files /dev/null and b/output/ex06_dwjfya differ diff --git a/output/ex06_orsdgr b/output/ex06_orsdgr new file mode 100755 index 0000000..46d2c9d Binary files /dev/null and b/output/ex06_orsdgr differ diff --git a/output/ex06_wxbdkt b/output/ex06_wxbdkt new file mode 100755 index 0000000..46d2c9d Binary files /dev/null and b/output/ex06_wxbdkt differ diff --git a/output/ex06_zsgoqs b/output/ex06_zsgoqs new file mode 100755 index 0000000..82e2dd1 Binary files /dev/null and b/output/ex06_zsgoqs differ diff --git a/output/ex07_dhuxxp b/output/ex07_dhuxxp new file mode 100755 index 0000000..10e2e43 Binary files /dev/null and b/output/ex07_dhuxxp differ diff --git a/output/ex07_nixeaw b/output/ex07_nixeaw new file mode 100755 index 0000000..10e2e43 Binary files /dev/null and b/output/ex07_nixeaw differ diff --git a/output/ex08_bwoldf b/output/ex08_bwoldf new file mode 100755 index 0000000..e94bc97 Binary files /dev/null and b/output/ex08_bwoldf differ diff --git a/output/ex09_yevjcg b/output/ex09_yevjcg new file mode 100755 index 0000000..a3a6fd1 Binary files /dev/null and b/output/ex09_yevjcg differ diff --git a/output/ex10_ecskqd b/output/ex10_ecskqd new file mode 100755 index 0000000..ec05319 Binary files /dev/null and b/output/ex10_ecskqd differ diff --git a/output/ex10_fdurbn b/output/ex10_fdurbn new file mode 100755 index 0000000..ec05319 Binary files /dev/null and b/output/ex10_fdurbn differ diff --git a/output/ex10_pkhcdz b/output/ex10_pkhcdz new file mode 100755 index 0000000..375019e Binary files /dev/null and b/output/ex10_pkhcdz differ diff --git a/output/ex10_rrnqlq b/output/ex10_rrnqlq new file mode 100755 index 0000000..e2b9e3a Binary files /dev/null and b/output/ex10_rrnqlq differ diff --git a/output/ex10_suixva b/output/ex10_suixva new file mode 100755 index 0000000..375019e Binary files /dev/null and b/output/ex10_suixva differ diff --git a/output/playground_dgodqp b/output/playground_dgodqp new file mode 100755 index 0000000..a1e2525 Binary files /dev/null and b/output/playground_dgodqp differ diff --git a/output/playground_enmxcf b/output/playground_enmxcf new file mode 100755 index 0000000..cafa4da Binary files /dev/null and b/output/playground_enmxcf differ diff --git a/output/playground_ghamgt b/output/playground_ghamgt new file mode 100755 index 0000000..52d2285 Binary files /dev/null and b/output/playground_ghamgt differ diff --git a/output/playground_ljtymd b/output/playground_ljtymd new file mode 100755 index 0000000..9ec0014 Binary files /dev/null and b/output/playground_ljtymd differ diff --git a/output/sub01_ikhsla b/output/sub01_ikhsla new file mode 100755 index 0000000..dfe5872 Binary files /dev/null and b/output/sub01_ikhsla differ diff --git a/output/sub01_oymvzj b/output/sub01_oymvzj new file mode 100755 index 0000000..e20ae29 Binary files /dev/null and b/output/sub01_oymvzj differ diff --git a/output/sub01_zpqjkp b/output/sub01_zpqjkp new file mode 100755 index 0000000..e20ae29 Binary files /dev/null and b/output/sub01_zpqjkp differ diff --git a/output/sub02_jemuwh b/output/sub02_jemuwh new file mode 100755 index 0000000..a167c07 Binary files /dev/null and b/output/sub02_jemuwh differ diff --git a/output/sub02_qkhqto b/output/sub02_qkhqto new file mode 100755 index 0000000..dbdc5b8 Binary files /dev/null and b/output/sub02_qkhqto differ diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..be32663 --- /dev/null +++ b/shell.nix @@ -0,0 +1,15 @@ +{ pkgs ? import {} }: +pkgs.mkShell { + packages = with pkgs; [ + gcc + gdb + gnumake + pkg-config + icu + ]; + + shellHook = '' + # Work around .NET tools failing on systems where ICU cannot be resolved. + export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1 + ''; +} \ No newline at end of file