반응형
[ 문제 ]
2진수가 주어졌을 때, 8진수로 변환하는 프로그램을 작성하시오.
[ 코드 ]
using System.Text;
StreamReader sr = new StreamReader(new BufferedStream(Console.OpenStandardInput()));
StreamWriter sw = new StreamWriter(new BufferedStream(Console.OpenStandardOutput()));
StringBuilder sb = new StringBuilder();
string n = sr.ReadLine();
int remainder = n.Length % 3;
if (remainder != 0)
{
int zeroAdd = 3 - remainder;
n = new string('0', zeroAdd) + n;
}
for (int i = 0; i < n.Length - 1; i+= 3)
{
string s = n.Substring(i, 3);
int intS = Convert.ToInt32(s, 2);
string convertS = Convert.ToString(intS, 8);
sb.Append(convertS);
}
if(n == "0")
{
sb.Append(0);
sw.Write(sb);
}
else
{
sw.Write(sb);
}
sw.Flush();
sw.Close();
sr.Close();
[ 풀이 ]
2진수를 8진수로 변환할 때, 뒤에서부터 3개씩 끊어서 그걸 10진수로 변환시키고 변환 시킨 intS를 8진수로 변환시켜줬다.
이때 2진수의 길이가 3으로 나누어 떨어지지 않으면 그 앞에 0을 붙여서 정확한 계산이 되게한다.
Substring(i, 3)은 i부터 3개를 나누라는 문자열 메서드 중 하나,
Convert.ToInt32(s, 2)는 2진수인 s를 정수형 10진수로 변환하라는 것,
Convert.ToString(intS, 8)은 10진수인 intS를 8진수로 변환하라는 것.
- 비슷하지만 반대인 문제는 밑에 올려놨다.
https://milkyquartz.tistory.com/114
[ 실행화면 ]
문제링크: https://www.acmicpc.net/problem/1373
반응형
'Language > C#' 카테고리의 다른 글
[C#] 백준 1977번 완전제곱수 (0) | 2024.03.01 |
---|---|
[C#] 백준 1252번 이진수 덧셈 (1) | 2024.02.29 |
[C#] 백준 1212번 8진수 2진수 (0) | 2024.02.28 |
[C#] 백준 1159번 농구 경기 (0) | 2024.02.28 |
[C#] 백준 1076번 저항 (0) | 2024.02.27 |