728x90
반응형
문제 풀기 전 생각 :
평소의 나였으면 문자열을 입력받은후
반복문으로 쪼개 아스키코드 를 활용해 풀었을테지만
3-2 문제를 풀고 난 후 scanf()을 한개씩 받고 바로바로 판별해서 출력하기로 했다.
#include <iostream> using namespace std; int main(){ string s; cin >> s; for (size_t i = 0; i < s.length(); i++) { if(s[i] == 'A') s[i] = 'X'; else if(s[i] == 'B') s[i] = 'Y'; else if(s[i] == 'C') s[i] = 'Z'; else s[i] = s[i] - 3; } cout << s; return 0; }
https://www.acmicpc.net/problem/5598
풀 때 어려웠던 점 또는 느낀점 :
아래 개선 방안에서 사용한 방법과 같은 방법을 사용하려고 했지만
예상치 못하게 틀렸습니다 가 나와서
일단 처음 생각했던 방법대로 풀었습니다.
개선방안 :
#include<cstdio>
char c;
int main() {
while (~scanf(" %c", &c))
printf("%c", (c+10)%26+65);
return 0;
}
개선 방안을 보니 scanf() 함수 사용에서 차이가 있었습니다.
scans("%c",&c);
scans(" %c",&c);
위의 두 경우는 차이가 있다는 사실을 간과하고 있었습니다
scanf(" %c",&c); 는 공백을 제외한 문자를 입력받는 것입니다.
아마 문자열 입력이 끝났는데도 스캔에프 함수는 계속해서
입력받으려 하기 때문에 생긴 실수라고 생각했고
#include<cstdio>
char c;
int main() {
while (~scanf(" %c", &c)){
if(c == 'A')
c = 'X';
else if(c == 'B')
c = 'Y';
else if(c == 'C')
c = 'Z';
else
c = c - 3;
putc(c,stdout);
}
return 0;
}
코드를 수정하니 정상적으로 작동했습니다.
아직 scans()함수를 깊게 공부하지 못해 생긴
실수라고 생각합니다.
이번 실수 기억하자!!
728x90
반응형
'Problem Solving' 카테고리의 다른 글
[C++] [LeetCode 860] Lemonade Change (pps 3-7) (0) | 2021.07.16 |
---|---|
[C++] [백준 17211] 좋은 날 싫은 날 (pps 3-5) (0) | 2021.07.13 |
[C++] [백준 11721] 열 개씩 끊어 출력하기 (pps 3-2) (0) | 2021.07.13 |
3-1. Student Attendance Record I (LeetCode 551) (0) | 2021.07.10 |
2-10. ZigZag Conversion (LeetCode 6) (0) | 2021.07.09 |
댓글