728x90
728x90
풀이
처음 생각 : 그냥 i%3==0해서 하면 되지 않을까? -> 13, 16 등등이 안됨
두번째 생각 : 10,100,1000 3구간으로 나누어서 10구간은 일의 자리만, 100구간은 일의 자리, 십의 자리만, 1000구간은 일의자리, 십의 자리, 백의 자리를 체크해서 -개수를 구해준다. -> 성공, 쉽게 구현했지만 코드가 너무 길고 중복된 부분이 많다 ..
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int num = 0;
cin >> num;
for (int i = 1; i <= num; i++) {
if (i < 10) { // 10 미만
if (i % 3 == 0) {
cout << "- ";
}
else {
cout << i << " ";
}
}
else if (i < 100) { // 100 미만
string str = "";
if ((i % 10) == 3 || (i % 10) == 6 || (i % 10) == 9) { // 일의 자리가 3,6,9일때
str += "-";
}
if ((i % 100 - i % 10) % 3 == 0 || (i % 100 - i % 10) % 6 == 0 || (i % 100 - i % 10) % 9 == 0) { // 십의 자리가 3,6,9일때
str += "-";
}
if (str.size() != 0) {
cout << str << " ";
}
else {
cout << i << " ";
}
}
else if (i < 1000) { // 1000 미만
string str = "";
if ((i % 10) == 3 || (i % 10) == 6 || (i % 10) == 9) { // 일의 자리가 3,6,9일때
str += "-";
}
if ((i % 100 - i % 10) % 3 == 0 || (i % 100 - i % 10) % 6 == 0 || (i % 100 - i % 10) % 9 == 0) { // 십의 자리가 3,6,9일때
str += "-";
}
if ((i % 1000 - i % 100 - i%10) % 3 == 0 || (i % 1000 - i % 100 - i % 10) % 6 == 0 || (i % 1000 - i % 100 - i % 10) % 9 == 0) { // 십의 자리가 3,6,9일때
str += "-";
}
if (str.size() != 0) {
cout << i << " ";
}
else {
cout << str << " ";
}
}
}
return 0;
}
3번째 생각 : 다른 티스토리 참고해서 코드 최적화 --> string 형태로 바꾸어서 생각
#include <bits/stdc++.h>
using namespace std;
int main() {
int num = 0;
cin >> num;
for (int i = 1; i <= num; i++) {
string str = to_string(i);
string ans = "";
for (int i = 0; i < str.size(); i++) {
if (str[i] == '3' || str[i] == '6' || str[i] == '9') {
ans+="-";
}
}
if (ans.size() != 0) { // 3,6,9 중 하나라도 있을 때
cout << ans << " ";
}
else { // 3,6,9,가 없을 때
cout << i << " ";
}
}
return 0;
}
정말 이렇게 쉽게 생각하는 분들 다들 대단하다 ... to_string() -> int to string 잘 기억해두자!
728x90
728x90
'Algorihtm > SWEA' 카테고리의 다른 글
C++ SWEA 1989. 초심자의 회문 검사 (1) | 2023.10.29 |
---|---|
C++ SWEA 1984. 중간 평균값 구하기 (0) | 2023.10.29 |
C++ SWEA 2001. 파리 퇴치 (1) | 2023.10.28 |
C++ SWEA 1954. 달팽이 숫자 (1) | 2023.10.23 |
C++ SWEA [S/W 문제해결 기본] 1일차 - 최빈수 구하기 (0) | 2023.10.20 |