엄청난 삽질을 했던 문제다.
#include <iostream>
#include <string>
using namespace std;
int main()
{
int N;
cin >> N;
for (int i = 1; i <= N; i++)
{
// 1~10까지 중 각각의 수
string num = to_string(i);
for (int k = 0; k < num.length(); k++)
{
if (num[k] != '0' && num[k] % 3 == 0)
{
cout << "-";
}
else
{
cout << num[k];
}
}
if(i != N){
cout << " ";
}
}
return 0;
}
첨에 이렇게 풀었는데 멀쩡하게 잘 나오길래 무려 5번을 더 제출해봤다..
이것저것 바꿔서..
근데 알고보니 문제를 제대로 안읽은 거심...
356 -> --
이렇게 출력해야하는데
바보같이
356-> -5-
이렇게 출력해버림 ... 흙흑
문제에 댓글 달린 거 읽다가 나같은 분이 적어주신 거보고 이거였네...하고 으이구으이구 하면서
바로 수정했다.
#include <iostream>
#include <string>
using namespace std;
int main()
{
int N;
cin >> N;
for (int i = 1; i <= N; i++)
{
// 1~10까지 중 각각의 수
string num = to_string(i);
int cnt = 0;
for (int k = 0; k < num.length(); k++)
{
// 3의 배수가 있을 cnt 추가
if (num[k] != '0' && num[k] % 3 == 0)
{
cnt++;
}
}
if(cnt == 0){
cout << i;
} else {
for(int i=0; i<cnt; i++){
cout << "-";
}
}
if(i != N){
cout << " ";
}
}
return 0;
}
이게 정답인 코드!
앞으로 문제를 제발 잘 읽자!!