728x90
반응형
2진수 8진수 성공
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
1 초 | 128 MB | 27913 | 10933 | 8996 | 40.910% |
문제
2진수가 주어졌을 때, 8진수로 변환하는 프로그램을 작성하시오.
입력
첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다.
출력
첫째 줄에 주어진 수를 8진수로 변환하여 출력한다.
예제 입력 1
11001100
예제 출력 1
314
과정
2의 3승은 8이다. 2진수는 뒤에서부터 세개씩 3개씩 묶어 자른 후 계산하면 8진수로 계산되는 부분을 이용해서 문제를 풀었다.
따라서 자릿수가 맞지 않는 경우 맞춰주는 작업을 하고 진행 해 주었다.
길이가 무한정한 문제로 string 자료형으로 풀어주었다.
결과
//
// Created by 전시은 on 2023/03/09.
//
// 문제 :: 2진수 8진수
// 링크 :: https://www.acmicpc.net/problem/1373
// 입력 :: 첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다.
// 출력 :: 첫째 줄에 주어진 수를 8진수로 변환하여 출력한다.
#include "../Problems.h"
#include <iostream>
#include <string>
using namespace std;
//int main()
int Solve1373()
{
cout << "[디버깅용] Solve1373 :: 시작지점 >> \n";
cin.tie(NULL);
ios_base::sync_with_stdio(false);
string sInput;
string sResult;
cin >> sInput;
if(sInput.size() % 3 != 0)
{
string sTemp;
sTemp += '0';
if(sInput.size() % 3 == 1)
{
sTemp += '0';
}
sTemp += sInput;
sInput = sTemp;
}
for(int i = 0; i < sInput.size(); i++)
{
if(i % 3 == 2)
{
int nSum = 0;
if(sInput[i-2] == '1')
{
nSum += 4;
}
if(sInput[i-1] == '1')
{
nSum += 2;
}
if(sInput[i] == '1')
{
nSum += 1;
}
sResult += (char) nSum + '0';
}
}
cout << sResult;
return 0;
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
[알고리즘] 뒤집힌 덧셈 - 백준 1357 (0) | 2023.03.17 |
---|---|
[알고리즘] 단어순서 뒤집기 - 백준 12605 (2) | 2023.03.14 |
[알고리즘] 일곱 난쟁이 - 백준 2309 (0) | 2023.03.11 |
[알고리즘] 세로읽기 - 백준 10798 (2) | 2023.03.11 |
[알고리즘] 약수 - 백준 1037 (0) | 2023.03.11 |