강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

alsrb4367님의 프로필 이미지
alsrb4367

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

학습하다가 궁금한게생겨 질문남깁니다

해결된 질문

작성

·

28

0

  1. 2진수 8진수 16진수에관한 질문입니다.

a.영상에선 16진수의 경우 0x1a이런식으로 쓴다고 했는데 답지에쓸때도 저렇게써야할까요?

b.8진수의 경우에는 어떻게표시하나요?

c. c언어에서%d가 10진수로 나타내라는건아는데 다른진수로 나타내라는 표현도 있는걸로 알고있는데 알려주시면 감사하겠습니다. 또한 자바나 파이썬도 그런 표시가 있나요?

 

  1. c언어랑 파이썬에서 소문자로 만드는건 각각tolower()와lower()로 알고있습니다.

그럼 소문자만 추출해내는 함수도 있나요?

답변 2

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

안녕하세요,

 

  1. 16진수를 직접 입력할 일이 없을 것 같은데, 정확히 시험에서 요구하는 형태로 출력하시면 됩니다. 16진수 형태로 출력해야 한다면 그렇게 써야 하고, 10진수로 써야 하면 10진수로 써야 합니다.

    보통 공단에서는 직접 실행했을 때의 값과 동일해야 정답처리 합니다. 참고로 C언어에서 직접 출력할 때는 앞에 0x가 붙지 않습니다.

< 예제코드 >

#include <stdio.h>

int main(void) {
    int num = 255;

    printf("10진수: %d\n", num);
    printf("8진수 : %o\n", num);
    printf("16진수 (소문자): %x\n", num);
    printf("16진수 (대문자): %X\n", num);

    return 0;
}

출력값:

10진수: 255

8진수 : 377

16진수 (소문자): ff

16진수 (대문자): FF

 

  1. 시험 범위가 아닐 것 같네요. 가능은 합니다.

< Java 예제 >

class Main {
    public static void main(String[] args) {
        int num = 42;
        System.out.println(num);                  // 10진수
        System.out.println(Integer.toOctalString(num));   // 8진수: 52
        System.out.println(Integer.toHexString(num));     // 16진수: 2a
        System.out.println(Integer.toBinaryString(num));  // 2진수: 101010
    }
}

출력값:

42

52

2a

101010

 

<파이썬 예제>

num = 42

print(num)           # 10진수
print(oct(num))      # 8진수: 0o52
print(hex(num))      # 16진수: 0x2a
print(bin(num))      # 2진수: 0b101010
print("{:d}".format(num))   # 10진수
print("{:o}".format(num))   # 8진수
print("{:x}".format(num))   # 16진수 (소문자)
print("{:X}".format(num))   # 16진수 (대문자)
print("{:b}".format(num))   # 2진수

출력값:

42
0o52
0x2a
0b101010
42
52
2a
2A
101010

 

알고 계시는 건 좋은데, 너무 과한 학습이 아닌가 싶습니다.

모든 언어의 진수 표기법을 알고 가실 필요는 없어 보입니다.

 

 

  1. C와 Python에서는 표준 함수로는 없습니다. 아스키코드로 확인하시거나, islower()와 같은 함수로 확인합니다. 시험에 나온다면, 전체를 반복문으로 감싸고 문자열을 회문하면서 확인되는 것만 배열에 추가하는 형태로 나올 수 있겠습니다.

< C언어 예제 >

#include <stdio.h>
#include <ctype.h>  // islower()

int main(void) {
    char input[] = "HeLLo 123 World!";
    char only_lower[100];
    int j = 0;

    for (int i = 0; input[i] != '\0'; i++) {
        if (islower(input[i])) {
            only_lower[j++] = input[i];
        }
    }
    only_lower[j] = '\0';

    printf("소문자만 추출: %s\n", only_lower);
    return 0;
}

 

<파이썬 예제>

s = "HeLLo 123 World!"
only_lower = ''.join(c for c in s if c.islower())
print("소문자만 추출:", only_lower)

 

 

출력값은 두 개의 소스코드 모두 똑같습니다.

소문자만 추출: eoorld

0

안녕하세요, 인프런 AI 인턴입니다. alsrb4367님.

질문해주신 2진수, 8진수, 16진수 표기법 및 소문자 변환 함수에 대해 답변 드리겠습니다.

  1. 16진수와 8진수 표기법:

    • C 언어에서 16진수 표기: 16진수는 0x로 시작하며, 예를 들어 0x1a처럼 표현합니다. 답안지에서도 동일하게 0x를 사용하여 표기하는 것이 일반적입니다.
    • 8진수 표기: C 언어에서 8진수는 0으로 시작합니다. 예를 들어, 012는 10진수 10을 의미합니다.
    • %d, %x 등 형식 지정: C 언어에서 %d는 10진수로, %x는 16진수, %o는 8진수를 뜻합니다. 이를 통해 다양한 진수 형태로 숫자를 출력할 수 있습니다.
    • 자바와 파이썬 표기: 자바는 Integer.toHexString(), Integer.toOctalString() 같은 메소드를 통해 다른 진수로 변환할 수 있습니다. 파이썬에서는 hex(), oct() 함수를 사용합니다.
  2. 소문자 변환 및 추출:

    • C 언어와 파이썬에서의 소문자 변환: 말씀하신 대로 C 언어에서는 tolower(), 파이썬에서는 lower()를 사용해 문자열을 소문자로 변환할 수 있습니다.
    • 소문자만 추출: 초반에 소문자만 추출하는 함수는 없습니다. 대신, 문자열에서 소문자만 남기려면 각각의 문자에 대해 검사하여 새 문자열을 생성할 수 있습니다. 예를 들어, 파이썬에서는 컴프리헨션을 사용하여 [c for c in 문자열 if c.islower()] 형태로 쉽게 추출할 수 있습니다.

더 높은 이해를 돕기 위해 유사한 질문과 답변이 제공된 기존의 지식을 찾아보셨으면 좋겠습니다. 가능한 기존 사례를 통해 직접적인 참고를 해 보세요:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

alsrb4367님의 프로필 이미지
alsrb4367

작성한 질문수

질문하기