추천글

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의 거듭제곱을 곱해 십진수를 계산합니다.

#include <stdio.h>

int binaryToDecimal(long long binary) {
    int decimal = 0, base = 1;
    while (binary) {
        int digit = binary % 10;
        decimal += digit * base;
        base *= 2;
        binary /= 10;
    }
    return decimal;
}

int main() {
    long long binary;
    printf("이진수를 입력하세요: ");
    scanf("%lld", &binary);
    printf("십진수: %d\n", binaryToDecimal(binary));
    return 0;
}

설명: 입력된 이진수를 정수로 처리하고, 각 자릿수를 추출하여 2의 거듭제곱(base)을 곱합니다. 이 방법은 직관적이며, 입력이 긴 이진수일 때도 효과적입니다.


2. 문자열로 처리하는 방법

이진수를 문자열로 입력받아 각 문자를 처리하는 방법입니다. 문자열의 각 문자를 숫자로 변환하여 계산합니다.

#include <stdio.h>
#include <string.h>

int binaryToDecimal(char *binary) {
    int decimal = 0;
    int len = strlen(binary);
    for (int i = 0; i < len; i++) {
        decimal = decimal * 2 + (binary[i] - '0');
    }
    return decimal;
}

int main() {
    char binary[65];
    printf("이진수를 입력하세요: ");
    scanf("%s", binary);
    printf("십진수: %d\n", binaryToDecimal(binary));
    return 0;
}

설명: 이진수를 문자열로 입력받아 각 문자를 처리합니다. 각 단계에서 십진수를 2배 하고 현재 자릿수를 더하는 방식으로 계산합니다. 문자열 입력을 처리해야 하는 경우 유용합니다.


3. 재귀를 사용한 변환

재귀 호출을 사용하여 이진수를 십진수로 변환합니다. 이진수의 각 자릿수를 재귀적으로 처리합니다.

#include <stdio.h>

int binaryToDecimal(long long binary, int base) {
    if (binary == 0) return 0;
    return (binary % 10) * base + binaryToDecimal(binary / 10, base * 2);
}

int main() {
    long long binary;
    printf("이진수를 입력하세요: ");
    scanf("%lld", &binary);
    printf("십진수: %d\n", binaryToDecimal(binary, 1));
    return 0;
}

설명: 이진수의 마지막 자릿수를 처리하고, 나머지 자릿수를 재귀적으로 계산합니다. base는 2의 거듭제곱을 나타내며, 재귀 호출마다 2배가 됩니다. 코드가 간결하지만, 긴 이진수에서는 스택 오버플로우 위험이 있습니다.


4. 비트 연산을 사용한 방법

이진수를 비트 단위로 처리하여 십진수를 계산합니다. 이 방법은 이진수의 본질을 비트로 간주합니다.

#include <stdio.h>

int binaryToDecimal(long long binary) {
    int decimal = 0;
    while (binary) {
        decimal = (decimal << 1) | (binary % 10);
        binary /= 10;
    }
    return decimal;
}

int main() {
    long long binary;
    printf("이진수를 입력하세요: ");
    scanf("%lld", &binary);
    printf("십진수: %d\n", binaryToDecimal(binary));
    return 0;
}

설명: 이진수의 각 자릿수를 비트로 간주하고, 왼쪽 시프트(<<)와 OR(|) 연산을 사용하여 십진수를 구성합니다. 이 방법은 비트 연산에 익숙한 경우 이해하기 쉽습니다.


5. 수학적 계산(제곱 함수 사용)

수학 라이브러리의 pow 함수를 사용하여 2의 거듭제곱을 계산합니다. 이 방법은 명시적으로 제곱을 계산합니다.

#include <stdio.h>
#include <math.h>

int binaryToDecimal(long long binary) {
    int decimal = 0, position = 0;
    while (binary) {
        int digit = binary % 10;
        decimal += digit * pow(2, position);
        position++;
        binary /= 10;
    }
    return decimal;
}

int main() {
    long long binary;
    printf("이진수를 입력하세요: ");
    scanf("%lld", &binary);
    printf("십진수: %d\n", binaryToDecimal(binary));
    return 0;
}

설명: 각 자릿수에 2의 거듭제곱(pow(2, position))을 곱하여 십진수를 계산합니다. 이 방법은 이해하기 쉽지만, pow 함수의 부동소수점 계산으로 인해 성능이 약간 떨어질 수 있습니다.


결론

위 5가지 방법은 각각의 장단점이 있습니다:

  • 반복문 방법: 직관적이고 효율적이며, 대부분의 경우 적합.
  • 문자열 방법: 문자열 입력 처리에 유용.
  • 재귀 방법: 코드가 간결하지만, 긴 입력에서 비효율적.
  • 비트 연산 방법: 비트 연산에 익숙한 경우 적합.
  • 수학적 계산: 명시적이지만, 성능이 약간 떨어짐.

코딩 테스트에서는 입력 형식과 성능 요구 사항에 따라 적절한 방법을 선택하는 것이 중요합니다. 이 코드를 참고하여 여러 접근 방식을 연습해보세요!

댓글