PS/문자열 알고리즘[String]

백준 1373 2진수 8진수(c++)

SeungbeomKim 2022. 7. 6. 19:24
반응형

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

 

1373번: 2진수 8진수

첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다.

www.acmicpc.net

<코드>

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

int main()
{
	 string s;
	 cin>>s;
	 int n = s.size();
	 if(n%3==1) cout<<s[0]; // MSB를 의미 : 가장 왼쪽 비트 
	 else if(n%3==2) cout<<(s[0]-'0')*2+s[1]-'0';//MSB와, 그 다음 비트 의미 
	 for(int i=n%3;i<n;i+=3)
	 {
	 cout<<(s[i]-'0')*4+(s[i+1]-'0')*2+(s[i+2]-'0');
	 }
}

<풀이과정>

가장 왼쪽 3비트가 비트수=1 가장 왼쪽 비트 하나 출력

                              비트수=2 가장 왼쪽 비트 하나 + 가장 왼쪽 비트와 한칸 떨어진 오른쪽 비트 하나 출력

문자 => 숫자 변환 문자 - '0'을 해주면 된다 ! 

숫자 => 문자 변환 숫자 + '0'을 해주면 된다 !

stoi, to_string 함수도 있지만 저거도 알아두면 유용하게 쓰일 것 같다고 생각했다.

반응형

'PS > 문자열 알고리즘[String]' 카테고리의 다른 글

백준 11656 접미사 배열(c++)  (1) 2022.07.08
백준 1212 8진수 2진수(c++)  (0) 2022.07.06
백준 14425 문자열 집합(c++)  (0) 2022.07.06
백준 5525 IOIOI(c++)  (0) 2022.07.05
백준 1764 듣보잡(c++)  (0) 2022.07.04