백준

백준 2745번: 진법 변환 (C언어)

2023. 8. 22. 14:16
목차
  1. 백준 2745번: 진법 변환 링크
  2. 문제를 풀기 전 생각한 것
  3. 풀면서 어려웠던 점
  4. 코드
  5. 풀면서 배운 점

백준 2745번: 진법 변환 링크

https://www.acmicpc.net/problem/2745

문제를 풀기 전 생각한 것

입력받은 게 알파벳인지 숫자인지 판별해 55를 빼줘야 할지 48을 빼줘야 할지 정하기

풀면서 어려웠던 점

예제는 제대로 나오는데 다른 수를 넣어보니 답이 이상하게 나왔다
이유는 pow 함수 때문이다
원래는 아래 코드가 아니라 pow(B, i)이었다

코드

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

int main(void) 
{
    char N[36] = {0};
    int B, ans = 0;

    scanf("%s %d",N,&B);

    for (int i = 0; i < strlen(N); i++) {
        if (N[i] >= 'A' && N[i] <= 'Z') {
            ans += (N[i] - 55) * pow(B,strlen(N) - i - 1);
        }
        else {
            ans += (N[i] - 48) * pow(B,strlen(N) - i - 1);
        }
    }

    printf("%d", ans);

    return 0;
}

풀면서 배운 점

pow 함수는 높은 자리부터 계산하는 성격이 있는데
그렇게 되면 pow(B,i)를 사용하는 코드에서 10 2를 입력하면
N[0] * 2^0 = 1 * 1 = 1
N[1] * 2^1 = 0 * 2 = 0
10 2를 입력하면 2가 나와야 하지만 1이 나온다
그래서 pow(B,strlen(N) - i - 1) 를 입력하면 지수가 반대로 들어가기 때문에 해결된다

반응형
저작자표시 (새창열림)
  1. 백준 2745번: 진법 변환 링크
  2. 문제를 풀기 전 생각한 것
  3. 풀면서 어려웠던 점
  4. 코드
  5. 풀면서 배운 점
'백준' 카테고리의 다른 글
  • 백준 2720번: 세탁소 사장 동혁 (C언어)
  • 백준 11005번: 진법 변환 2 (C언어)
  • 백준 2501번: 약수 구하기 (C언어)
  • 백준 10798번: 세로읽기 (C언어)
NamDoHyeon
NamDoHyeon
반응형
NamDoHyeon
뉴비 개발자
NamDoHyeon
전체
오늘
어제

블로그 메뉴

  • 홈
  • 방명록
  • 관리자
  • 글쓰기
  • 분류 전체보기 (89)
    • 백준 (38)
    • 부트캠프 (41)
      • 멋쟁이 사자처럼 (41)
    • HTML (1)
      • Google 클론 (1)
    • 개인공부 (9)
      • 데이터베이스 (2)
      • 소프트웨어 공학 (1)
      • C (5)
      • 알고리즘 (1)

최근 글

hELLO · Designed By 정상우.
NamDoHyeon
백준 2745번: 진법 변환 (C언어)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.