문제
내가 작성한 코드
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
void reverse(char input[]){
int len = strlen(input);
for(int i = 0; i<len/2; i++){
char tmp = input[i];
input[i] = input[len-i-1];
input[len-i-1] = tmp;
}
}
int main() {
char input[100];
scanf("%s", input);
int pm = atoi(input);
reverse(input);
int result = atoi(input);
if(pm < 0){
result *= -1;
}
printf("%d", result);
return 0;
}
왜? 테스트 케이스 2개를 여전히 통과 못하는지 모르겠다
일단 배열에 한 숫자씩 저장한 다음에 pm을 통해 음수, 양수 여부를 파악하게 해줬다
그런다음 reverse라는 함수를 통해 뒤집은 문자열을 atoi를 통해 정수로 변환하게 해주어서
123000처럼 끝이 0이어도 321로 정상적으로 출력되고
-423을 넣어도 -324가 나오는데
00을 넣어도 0이 나오는데
뭐가 틀린거지
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
void reverse(char input[]){
int len = strlen(input);
for(int i = 0; i<len/2; i++){
char tmp = input[i];
input[i] = input[len-i-1];
input[len-i-1] = tmp;
}
}
int main() {
char input[100];
scanf("%s", input);
reverse(input);
int result = atoi(input);
printf("%d", result);
return 0;
}
오히려 이것처럼 음수 판단 안하게 하니까 테스트케이스 1개만 통과못하는 경우로 줄었다.
음수를 넣어도 양수로 나와야 하는건가... 끄응
이런 거에 대해 조금 더 상세히 설명이 되어있었다면 좋을텐데 문제에 ㅠ
그래도 여전히 왜 1개를 통과못하는지 모르겠다.
엄청나게 큰 수가 나왔을 때도 생각을 해야 되는건가
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
void reverse(char input[]){
int len = strlen(input);
for(int i = 0; i<len/2; i++){
char tmp = input[i];
input[i] = input[len-i-1];
input[len-i-1] = tmp;
}
}
int main() {
char input[10000];
scanf("%s", input);
reverse(input);
long long int result = atoll(input);
printf("%lld", result);
return 0;
}
라고 하기엔 long long int를 썼음에도 통과 못한다.... 어디서 틀린거냣
진짜 모르게따... 미해결 문제
'C언어 > 문제은행' 카테고리의 다른 글
[10주차] 문자열 딕셔너리 (0) | 2023.07.26 |
---|---|
[10주차] 예비군 파이팅 (0) | 2023.07.26 |
[10주차] 문자열 배열 (0) | 2023.07.19 |
[8주차] 행렬 덧셈, 뺄셈 (0) | 2023.07.17 |
[8주차] 90도 회전 (0) | 2023.07.17 |