이번 문제도 나름대로 간단한 편이다.
문제 설명이 쓸데없이 많은 편인데, N바이트 정수를 저장할 수 있는 자료형을 찾아 출력하면 되는 문제이다.
long을 여러번 붙여서 구현하면 된다.
long이 4 바이트를 추가시켜주니까 N을 4로 나누고 반내림 이후 나온 값만큼
앞에서 long을 붙여주고 마지막에 int를 붙여주면 간단히 해결될 것 같다.
using System;
namespace unicoti {
class Program {
static void Main(string[] args) {
int num;
int.TryParse(Console.ReadLine(), out num);
int repeat = (int)MathF.Floor(num/4f);
for(int i = 0; i < repeat; i++) {
Console.Write("long ");
}
Console.Write("int");
}
}
}
일단 num이라는 변수에 문제의 N값을 받아와 저장해주었다.
이후 long을 몇번 써야하는지 알기 위해 repeat라는 변수를 만들어서 for문에 활용했다.
이후 repeat만큼 반복하는 for문을 만든 이후 Console.Write를 사용해 한줄이 되도록 유도했다.
띄어쓰기도 형식에 맞춰 추가했다. 이후 마지막에는 "int"를 붙여서 출력 형식을 맞춰 주었다.
오늘의 느낀점)
일단 문제 자체는 빠르게 해결했지만 느낀점은 몇개 있었다.
우선 Console.WriteLine만 사용해왔었는데 줄바꿈을 안하는 출력문이 필요했다.
근데 대부분의 언어가 줄바꿈을 안하는 함수도 따로 지원하기에 감으로 빠르게 찾아 사용할 수 있었다.
또 다른 느낀점으로는 MathF.Floor인데, MathF.Floor의 기능이 소수점을 없애는 것인데
반환값이 float 형식이다. 어차피 소수점을 없애면 정수일텐데 왜 반환값을 float로 해놓았을까?
심지어 설명에도 "integral value", 정수값이라고 되어있다.
AI에게 물어보기도 하고 stackoverflow나 포럼을 찾아본 결과
나와 같은 질문을 찾을 수 있었고, 명확한 답은 찾지 못했다.
다만 float말고 double로 표현되는 경우도 많은데, 이때는 범위가 넓기 때문이라는 설명이 있었고,
float나 double이 숫자 계산에서 용이하기에 통일한 것이라는 의견도 있었다.
실제로 간단히 (int)만 붙이면 강제형변환이 가능하기에 계산의 용이성을 따지면
float나 double값으로 반환하는 게 더 나을 것 같다는 생각을 했다.
이상으로 도움이 되었길 바라며,
끝.
'코딩테스트 (C#)' 카테고리의 다른 글
백준 11021 : A+B - 7 (0) | 2024.08.27 |
---|---|
백준 15552 : 빠른 A+B - C# 풀이 (0) | 2024.08.27 |
백준 25304 : 영수증 - C# 풀이 (0) | 2024.08.23 |
백준 8393 : 합 - C# 풀이 (0) | 2024.08.22 |
백준 10950 : A+B - 3, C# 풀이 (0) | 2024.08.21 |
댓글