라벨이 프로그램인 게시물 표시

추천글

2025 타임지 세계 영향력 100인에 포함된 한국인

  이재명 (지도자 부문) 로제 (Rosé) (개척자 부문) 1. 이재명 (지도자 부문) 배경 : 이재명은 대한민국의 야당 지도자이자 더불어민주당 전 대표로, 차기 대통령 선거의 유력 후보로 평가받고 있습니다. 농부 가정에서 태어나 어려운 어린 시절을 보냈으며, 공장에서 일하다 손목 부상을 당한 경험을 가지고 있습니다. 그는 성남시장과 경기도지사를 역임했으며, 2022년 대통령 선거에서 윤석열에게 근소한 차이로 패배했습니다. 최근 활동 : 2024년 1월 목에 칼에 찔리는 공격을 견뎌냈고, 같은 해 12월 윤석열 대통령의 계엄령 선언 이후 탄핵을 주도했습니다. 특히, 경찰 봉쇄를 뚫고 국회 울타리를 넘는 장면이 생중계되며 큰 주목을 받았습니다. 영향력 : 타임지는 이재명의 정치적 저항력과 리더십을 높이 평가하며, 그가 대통령에 당선될 경우 북한의 위협과 글로벌 무역 전쟁 등 복잡한 과제에 직면할 것이라고 언급했습니다. 인용구 : “세상을 배우는 방법은 많지만, 직접 살아보고 경험하는 것은 다르다” (2022년 타임 인터뷰). 작성자 : Charlie Campbell (타임 편집장 대행). 2. 로제 (Rosé, 개척자 부문) 배경 : 로제(본명: Roseanne Park)는 세계적인 K-팝 걸그룹 블랙핑크의 멤버로, 뉴질랜드에서 태어나 호주에서 자란 한국계 아티스트입니다. 블랙핑크는 전 세계적으로 가장 성공한 걸그룹 중 하나로, 로제는 팀 활동뿐 아니라 솔로 아티스트로서도 두각을 나타내고 있습니다. 최근 활동 : 2024년 10월, 브루노 마스(Bruno Mars)와의 협업 곡 “APT.”를 발표하며 글로벌 차트에서 큰 성공을 거두었습니다. 이 곡은 빌보드 글로벌 200 1위, 미국 빌보드 핫 100 8위(최고 순위 3위), 한국 써클 디지털 차트 1위를 기록하며 전 세계적으로 화제가 되었습니다. 유튜브 뮤직비디오는 1월에 10억 뷰를 돌파하며 역대 가장 빠른 기록 중 하나를 세웠습니다. 2024년 12월, 첫 솔로 정규...

코테 - 피라미드 패턴 생성 5가지 방법

피라미드 패턴은 코딩 테스트에서 자주 등장하는 출력 문제로, 반복문을 활용해 다양한 모양을 생성합니다. 아래는 C 언어를 사용해 피라미드 패턴을 생성하는 5가지 방법으로, 코딩 테스트 준비에 유용합니다. 방법 1: 기본 별 피라미드 중앙에 정렬된 기본 별(*) 피라미드를 출력합니다. 각 행은 2*i-1개의 별을 포함합니다. #include <stdio.h> void printPyramid(int n) { for (int i = 1; i <= n; i++) { for (int j = 1; j <= n - i; j++) printf(" "); for (int j = 1; j <= 2 * i - 1; j++) printf("*"); printf("\n"); } } int main() { int n; printf("피라미드 높이를 입력하세요: "); scanf("%d", &n); printPyramid(n); return 0; } 방법 2: 숫자 피라미드 각 행에 증가하는 숫자를 출력하는 피라미드입니다. 숫자는 행 번호를 반복합니다. #include <stdio.h> void printPyramid(int n) { for (int i = 1; i <= n; i++) { for (int j = 1; j <= n - i; j++) printf(" "); for (int j = 1; j <= i; j++) printf("%d ", i); printf("\n")...

코테 - 원의 면적 계산 5가지 방법

원의 면적은 A = π * r^2 공식으로 계산됩니다. 아래는 C 언어를 사용해 반지름을 입력받아 원의 면적을 계산하는 5가지 방법으로, 코딩 테스트 준비에 유용합니다. 방법 1: 상수 PI 사용 고정된 PI 값을 상수로 정의하여 면적을 계산합니다. #include <stdio.h> #define PI 3.14159265359 double calculateArea(double radius) { return PI * radius * radius; } int main() { double radius; printf("반지름을 입력하세요: "); scanf("%lf", &radius); printf("원의 면적: %.2f\n", calculateArea(radius)); return 0; } 방법 2: math.h의 M_PI 사용 math.h 라이브러리의 M_PI 상수를 사용하여 면적을 계산합니다. #include <stdio.h> #include <math.h> double calculateArea(double radius) { return M_PI * radius * radius; } int main() { double radius; printf("반지름을 입력하세요: "); scanf("%lf", &radius); printf("원의 면적: %.2f\n", calculateArea(radius)); return 0; } 방법 3: 사용자 정의 PI 함수 PI를 수학적으로 근사 계산(예...

코테 - 카데인 알고리즘 구현 5가지 방법

카데인 알고리즘은 배열에서 최대 부분 배열 합을 찾는 효율적인 방법입니다. 아래는 C 언어를 사용해 카데인 알고리즘을 구현한 5가지 방법으로, 코딩 테스트 준비에 유용합니다. 방법 1: 기본 카데인 알고리즘 기본적인 카데인 알고리즘으로, 현재 합과 최대 합을 비교하며 배열을 순회합니다. #include <stdio.h> int maxSubArray(int arr[], int n) { int max_sum = arr[0], current_sum = arr[0]; for (int i = 1; i < n; i++) { current_sum = (current_sum + arr[i] > arr[i]) ? current_sum + arr[i] : arr[i]; max_sum = (max_sum > current_sum) ? max_sum : current_sum; } return max_sum; } int main() { int arr[] = {-2, 1, -3, 4, -1, 2, 1, -5, 4}; int n = sizeof(arr) / sizeof(arr[0]); printf("최대 부분 배열 합: %d\n", maxSubArray(arr, n)); return 0; } 방법 2: 카데인 알고리즘 (음수 처리 명시적) 음수 배열을 명시적으로 처리하며, 초기 값을 INT_MIN으로 설정해 모든 경우를 다룹니다. #include <stdio.h> #include <limits.h> int maxSubArray(int arr[], int n) { int max_sum = INT_MIN, current_sum = 0; for (int i...

코테 - 최소공배수(LCM) 찾기 5가지 방법

최소공배수(LCM)는 두 숫자가 동시에 나누어지는 가장 작은 수입니다. 아래는 C 언어를 사용해 두 숫자의 LCM을 찾는 5가지 방법으로, 코딩 테스트 준비에 유용합니다. 방법 1: GCD를 이용한 LCM (유클리드 알고리즘 반복) LCM(a,b) = (a * b) / GCD(a,b) 공식을 사용하며, GCD는 반복적 유클리드 알고리즘으로 계산합니다. #include <stdio.h> int gcd(int a, int b) { while (b != 0) { int temp = b; b = a % b; a = temp; } return a; } long long lcm(int a, int b) { return ((long long)a * b) / gcd(a, b); } int main() { int a = 12, b = 18; printf("LCM(%d, %d) = %lld\n", a, b, lcm(a, b)); return 0; } 방법 2: GCD를 이용한 LCM (유클리드 알고리즘 재귀) 재귀적 유클리드 알고리즘으로 GCD를 구한 후, LCM 공식을 적용합니다. #include <stdio.h> int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b); } long long lcm(int a, int b) { return ((long long)a * b) / gcd(a, b); } int main() { int a = 12, b = 18; printf("LCM(%d, %d) = %lld\n", a, b, lcm(a, b)); r...

코테 - 최대공약수(GCD) 찾기 5가지 방법

최대공약수(GCD)는 두 숫자의 공통된 약수 중 가장 큰 값입니다. 아래는 C 언어를 사용해 두 숫자의 GCD를 찾는 5가지 방법으로, 코딩 테스트 준비에 유용합니다. 방법 1: 유클리드 알고리즘 (반복) 유클리드 알고리즘을 반복문으로 구현하여 두 숫자를 나눈 나머지를 이용해 GCD를 계산합니다. #include <stdio.h> int gcd(int a, int b) { while (b != 0) { int temp = b; b = a % b; a = temp; } return a; } int main() { int a = 48, b = 18; printf("GCD(%d, %d) = %d\n", a, b, gcd(a, b)); return 0; } 방법 2: 유클리드 알고리즘 (재귀) 유클리드 알고리즘을 재귀적으로 구현하여 간결하게 GCD를 계산합니다. #include <stdio.h> int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b); } int main() { int a = 48, b = 18; printf("GCD(%d, %d) = %d\n", a, b, gcd(a, b)); return 0; } 방법 3: 반복문을 통한 약수 나열 두 숫자의 약수를 나열하고 공통 약수 중 가장 큰 값을 찾습니다. #include <stdio.h> int gcd(int a, int b) { int min = a < b ? a : b; in...

코테 - 파스칼 삼각형 n번째 행 반환 5가지 방법

파스칼 삼각형의 n번째 행은 이항계수를 나타내며, 각 요소는 C(n,k)로 계산됩니다. 아래는 C 언어를 사용해 n번째 행을 반환하는 5가지 방법으로, 코딩 테스트 준비에 유용합니다. (n은 0-based 인덱스) 방법 1: 조합 공식 사용 이항계수 C(n,k)를 직접 계산하여 n번째 행을 생성합니다. #include #include long long binomial(int n, int k) { if (k < 0 || k > n) return 0; long long res = 1; for (int i = 0; i < k; i++) { res *= (n - i); res /= (i + 1); } return res; } int* getRow(int n, int* returnSize) { *returnSize = n + 1; int* row = (int*)malloc((n + 1) * sizeof(int)); for (int k = 0; k <= n; k++) { row[k] = (int)binomial(n, k); } return row; } int main() { int n = 4, returnSize; int* row = getRow(n, &returnSize); printf("행 %d: ", n); for (int i = 0; i < returnSize; i++) { printf("%d ", row[i]); } printf("\n"); free(row); return 0; } 방법 2: 이전 행에서 계산 파스칼 삼각형의 속성을 ...

코테 - 팰린드롬 확인 프로그램 5가지 방법

팰린드롬 숫자는 앞뒤로 읽어도 동일한 숫자입니다. 아래는 C 언어를 사용해 숫자가 팰린드롬인지 확인하는 5가지 방법으로, 코딩 테스트 준비에 유용합니다. 방법 1: 숫자 반전 숫자의 각 자릿수를 추출해 전체 숫자를 반전시킨 후 원래 숫자와 비교합니다. #include <stdio.h> int isPalindrome(int num) { if (num < 0) return 0; long long reversed = 0, original = num; while (num > 0) { reversed = reversed * 10 + num % 10; num /= 10; } return reversed == original; } int main() { int num = 12321; printf("%d는 %s\n", num, isPalindrome(num) ? "팰린드롬입니다" : "팰린드롬이 아닙니다"); return 0; } 방법 2: 문자열로 변환 숫자를 문자열로 변환한 후 양쪽 끝에서부터 문자를 비교합니다. #include <stdio.h> #include <string.h> int isPalindrome(int num) { if (num < 0) return 0; char str[20]; sprintf(str, "%d", num); int len = strlen(str); for (int i = 0; i < len / 2; i++) { if (str[i] != str[len - 1 - i]) return 0; } retu...

코테 - 암스트롱 수 확인 프로그램 5가지 방법

  암스트롱 수는 각 자릿수의 값을 해당 자릿수 개수만큼 거듭제곱한 합이 원래 수와 같은 수를 의미합니다(예: 153 = 1³ + 5³ + 3³). 다음은 5가지 구현 방법입니다: 기본 반복문 : 자릿수를 추출하고 거듭제곱을 계산하는 기본적인 방법. 재귀 함수 : 자릿수 계산과 합을 재귀적으로 처리. 문자열 변환 : 숫자를 문자열로 변환해 자릿수를 처리. 배열 사용 : 자릿수를 배열에 저장해 처리. 수학적 최적화 : 자릿수 계산을 최소화하는 방법. 암스트롱 수는 각 자릿수의 값을 자릿수 개수만큼 거듭제곱한 합이 원래 수와 같은 수입니다. 예를 들어, 153은 1³ + 5³ + 3³ = 153이므로 암스트롱 수입니다. 아래는 C 언어로 이를 확인하는 5가지 구현 방법입니다. 1. 기본 반복문 숫자의 자릿수를 추출하고, 각 자릿수를 자릿수 개수만큼 거듭제곱하여 합을 계산합니다. #include <stdio.h> #include <math.h> int countDigits(int num) { int count = 0; while (num > 0) { num /= 10; count++; } return count; } int isArmstrong(int num) { int original = num, sum = 0, digits = countDigits(num); while (num > 0) { int digit = num % 10; sum += pow(digit, digits); num /= 10; } return sum == original; } int main() { int num; printf("숫자를 입력하세요: "); scanf(...

코테 - 팩토리얼 계산 5가지 방법

팩토리얼은 수학에서 자주 등장하는 연산으로, 코딩테스트에서도 단골 문제입니다. 이번 포스트에서는 C언어를 사용해 팩토리얼을 계산하는 5가지 방법을 소개합니다. 각 방법은 성능과 코드 구조 면에서 차이가 있으니, 상황에 맞게 활용해보세요! 1. 반복문(Iterative) 방식 가장 직관적인 방법으로, 루프를 사용해 1부터 n까지 곱합니다. 메모리 효율이 좋고 스택 오버플로우 위험이 없습니다. #include <stdio.h> unsigned long long factorial_iterative(int n) { unsigned long long result = 1; for (int i = 1; i <= n; i++) { result *= i; } return result; } int main() { int n = 5; printf("%d! = %llu\n", n, factorial_iterative(n)); return 0; } 장점: 간단하고 빠름. 단점: 큰 숫자에서 오버플로우 가능성. 2. 재귀(Recursive) 방식 수학적 정의를 그대로 코드로 옮긴 방식입니다. n! = n × (n-1)!를 재귀 호출로 구현합니다. #include <stdio.h> unsigned long long factorial_recursive(int n) { if (n == 0 || n == 1) return 1; return n * factorial_recursive(n - 1); } int main() { int n = 5; printf("%d! = %llu\n", n, factorial_recursive(n)); retu...

코테 - 두 숫자가 같은지 확인하는 5가지 방법 프로그램 구현

비트 연산자를 사용하지 않고 두 숫자가 같은지 확인하는 방법을 C언어로 5가지로 구현해 보겠습니다. 이 방법들은 비트 연산자를 피하면서도 효과적으로 두 숫자의 동일성을 검사할 수 있습니다. 방법 1: 직접 비교 연산자 사용 가장 기본적인 방법으로, == 연산자를 사용합니다. #include <stdio.h> int main() { int a, b; printf("두 숫자를 입력하세요: "); scanf("%d %d", &a, &b); if (a == b) { printf("두 숫자는 같습니다.\n"); } else { printf("두 숫자는 다릅니다.\n"); } return 0; } 방법 2: 뺄셈 사용 두 숫자의 차이가 0인지 확인합니다. 이 방법은 오버플로우가 발생하지 않는 범위에서 정확합니다. #include <stdio.h> int main() { int a, b; printf("두 숫자를 입력하세요: "); scanf("%d %d", &a, &b); if (a - b == 0) { printf("두 숫자는 같습니다.\n"); } else { printf("두 숫자는 다릅니다.\n"); } return 0; } 방법 3: 절대값 차이 사용 두 숫자의 절대값 차이가 0인지 확인합니다. 이 방법은 음수도 처리할 수 있으며, abs 함수가 비트 연산자를 사용하지 않는 표준 함수이므로 안전합니다. #include <stdio.h> #include <stdlib.h...

코테 - 이차방정식 근 찾기 5가지 방법

이차 방정식 ( ax^2 + bx + c = 0 )의 모든 근을 찾는 프로그램을 C언어로 5가지 방법으로 구현해 보겠습니다. 이차 방정식의 근은 판별식 ( D = b^2 - 4ac )에 따라 결정됩니다: ( D > 0 ): 두 개의 서로 다른 실근 ( D = 0 ): 하나의 실근 (중근) ( D < 0 ): 두 개의 복소근 아래는 각기 다른 접근법으로 구현한 코드입니다. 복소근의 경우, C언어에서는 복소수 처리를 위해  complex.h  헤더를 사용합니다. 1. 기본 판별식 사용 알고리즘 설명 판별식 D = b² - 4ac 계산 D > 0: 두 개의 실근 D = 0: 중근 D < 0: 허근 계산 장단점 장점: 가장 직관적인 구현 방식 단점: 복소수 표현이 제한적 #include <stdio.h> #include <math.h> #include <complex.h> void solveQuadratic(double a, double b, double c) { double D = b*b - 4*a*c; if (D > 0) { double root1 = (-b + sqrt(D)) / (2*a); double root2 = (-b - sqrt(D)) / (2*a); printf("두 개의 실근: %.2f, %.2f\n", root1, root2); } else if (D == 0) { double root = -b / (2*a); printf("하나의 ...

코테 - 윤년인지 확인하는 프로그램 5가지 방법

윤년인지 확인하는 프로그램을 C언어로 5가지 방법으로 구현해 보겠습니다. 윤년 규칙은 다음과 같습니다: 4로 나누어 떨어지면 윤년 단, 100으로 나누어 떨어지면 윤년이 아님 단, 400으로 나누어 떨어지면 윤년 아래는 각기 다른 접근법으로 구현한 코드입니다. 방법 1: 기본 조건문 사용 가장 직관적인 방법으로, 윤년 규칙을 그대로 조건문으로 구현합니다. #include <stdio.h> int isLeapYear(int year) { if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) return 1; return 0; } int main() { int year; printf("연도를 입력하세요: "); scanf("%d", &year); if (isLeapYear(year)) printf("%d년은 윤년입니다.\n", year); else printf("%d년은 윤년이 아닙니다.\n", year); return 0; } 방법 2: 중첩 조건문 사용 규칙을 단계적으로 확인하는 중첩 조건문 방식입니다. #include <stdio.h> int isLeapYear(int year) { if (year % 4 == 0) { if (year % 100 == 0) { if (year % 400 == 0) return 1; return 0; } return 1; } return 0; } int main(...

SKT해킹한 프로그램 - BPF Door

BPFDoor는 SK텔레콤(SKT) 해킹 사건에서 사용된 것으로 확인된 리눅스 기반 백도어 악성코드로, 고도로 은밀하고 탐지가 어려운 특성을 가진 사이버 공격 도구입니다. 아래에서 BPFDoor의 특징, 작동 방식, SKT 해킹과의 연관성, 그리고 보안 대응 방안에 대해 자세히 설명하겠습니다. 1. BPFDoor란? BPFDoor는 Berkeley Packet Filter(BPF) 기술을 악용한 백도어 악성코드로, 리눅스 및 솔라리스 운영체제를 주로 표적으로 삼습니다. 2021년 PwC의 위협 보고서를 통해 처음 공개되었으며, 이후 다양한 변종이 등장하면서 지속적으로 진화하고 있습니다. 백도어(Backdoor) : BPFDoor는 시스템에 몰래 설치되어 해커가 정상적인 인증 절차를 우회해 시스템에 접근할 수 있도록 "뒷문"을 만드는 악성코드입니다. 이를 통해 해커는 감염된 시스템을 원격으로 제어하거나 데이터를 탈취할 수 있습니다. 주요 특징 : 은닉성 : 일반적인 보안 솔루션이나 방화벽을 우회하며, 탐지되지 않도록 정상 시스템 프로세스로 위장합니다(예: kdmtmpflush, vmtoolsdsrv 등). 매직 패킷 : 특정 신호(매직 패킷)를 수신할 때만 활성화되며, 평소에는 잠복 상태로 활동 흔적을 최소화합니다. 오픈소스 : BPFDoor의 소스 코드가 GitHub 등에서 공개되어 있어 다양한 해커가 변종을 제작할 수 있습니다. 2. BPFDoor의 작동 방식 BPFDoor는 리눅스 커널의 BPF 기능을 악용해 네트워크 트래픽을 조작하고, 보안 장비의 탐지를 피합니다. 아래는 주요 작동 메커니즘입니다: BPF(Berkeley Packet Filter) 악용 : BPF는 원래 네트워크 패킷을 필터링하고 분석하기 위한 리눅스 커널 기능입니다. BPFDoor는 이 기능을 악용해 특정 패킷(매직 패킷)을 감지하고, 이를 통해 악성 명령을 실행합니다. 방화벽이나 네트워크 모니터링 도구를 우회하기 위해 커널 수...