Plite
전자오락 공방
Plite
전체 방문자
오늘
어제
  • 분류 전체보기 (274)
    • 프로젝트 (18)
      • 완성 프로젝트 (3)
      • 프로젝트 진행 내역 (15)
    • 공부 및 정리 (241)
      • 백준 코드 (222)
      • C++ (8)
      • DirectX (2)
      • Unreal Engine (6)
      • 프로그래밍 패턴 (3)
    • 기타 (12)
      • 기타 주저리 (10)
    • 게임과 취미 (1)
    • 대문 (1)

블로그 메뉴

  • 홈
  • 프로젝트
  • 취미, 일상
  • 백준 프로필

공지사항

  • [Read Me]
  • 제 블로그에 방문하신 것을 환영합니다.

인기 글

태그

  • 우선순위큐
  • 동적계획법
  • 유니온 파인드
  • 브루트포스
  • 조합론
  • 백준
  • 최소 스패닝 트리
  • C++
  • 그래프
  • 스택
  • 수학
  • 정수론
  • KMP
  • 분할정복
  • 세그먼트 트리
  • 정렬
  • UC++
  • LCA
  • 큐
  • 위상 정렬
  • SCC
  • 투포인터
  • 기하
  • 트라이
  • 트리
  • 구현
  • 이분탐색
  • 누적합
  • 문자열
  • 백트래킹

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Plite

전자오락 공방

[C++]백준 - 1212번 문제
공부 및 정리/백준 코드

[C++]백준 - 1212번 문제

2021. 11. 20. 17:56

1212번: 8진수 2진수 (acmicpc.net)

 

1212번: 8진수 2진수

첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다.

www.acmicpc.net

 

1212번 : 8진수 2진수


8진수가 주어졌을 때, 2진수로 변환하는 프로그램을 작성하시오.

 

입력


첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다.

출력


첫째 줄에 주어진 수를 2진수로 변환하여 출력한다. 수가 0인 경우를 제외하고는 반드시 1로 시작해야 한다.

 

 


 

생각해 볼 점


우선 입력값을 보면, 수의 길이가 333,334개 일 수 있습니다.

 

즉, int나 long long 등 어떤 숫자 자료형을 써도 담아낼 수 없는 큰 수를 사용합니다.

 

따라서, 우리는 char 배열이나 string같은 문자열에 수를 담아야 합니다.

 

입력을 문자열에 담고, 어차피 입력값이 8진수의 형태로 들어왔다면,

 

8진수 -> 2진수는 다음과 같이 변환 가능합니다.

 

예시 ) (8진수) 7 = (2진수) 111

 

7 / 4 = 1      /      7 % 4 = 3

 

3 / 2 = 1       /     3 % 2 = 1

1

 

즉,

1. 8진수 N을 4로 나눈 몫

2. N을 4로 나눈 나머지를 2로 나눈 몫

3. N을 2로 나눈 나머지

 

세가지를 합하면 이진수가 완성됩니다.

이진수 역시 엄청 길게 나오므로, 문자열 형태로 출력합니다.

 

코드


#include <iostream>
#include <string>
using namespace std;


int main()
{
	string input;
	cin >> input;

	string ans = "";

	for (char c : input)
	{
		string bin = "";
		int n = c - 48;
		
		bin += (char)((n / 4) + 48);
		n %= 4;
		bin += (char)((n / 2) + 48);
		n %= 2;
		bin += (char)(n + 48);
		ans += bin;
	}
	int length = 0;
	for (int i = 0; i < 3; i++)
	{
		if (ans[i] == '0') length++;
		else break;
	}
	ans.erase(0, length);

	if (ans.empty()) cout << "0";
	else cout << ans;
	return 0;
}

 

그 외


 

저작자표시 (새창열림)

'공부 및 정리 > 백준 코드' 카테고리의 다른 글

[C++]백준 - 14725번 문제  (0) 2021.11.22
[C++]백준 - 1284번 문제  (0) 2021.11.22
[C++]백준 - 1305번 문제  (0) 2021.11.20
[C++]백준 - 6503번 문제  (0) 2021.11.18
[C++]백준 - 4354번 문제  (0) 2021.11.18
    '공부 및 정리/백준 코드' 카테고리의 다른 글
    • [C++]백준 - 14725번 문제
    • [C++]백준 - 1284번 문제
    • [C++]백준 - 1305번 문제
    • [C++]백준 - 6503번 문제
    Plite
    Plite
    개발 일지, 게임 이야기 등을 적어두는 공간입니다.

    티스토리툴바