블램의 일상 IT카페

백준 25083번 [새싹] - 풀이(출력 형식이 잘못되었습니다. 뜨는분들 꼭 보세요.) 본문

IT/알고리즘 문제 풀이

백준 25083번 [새싹] - 풀이(출력 형식이 잘못되었습니다. 뜨는분들 꼭 보세요.)

ble_ram 2022. 11. 16. 21:14

문제.


 

 

 

 

내가 틀린 이유.


: 분명 ide에선 제대로 출력이 되는데 이상하게 백준에선 자꾸 요로콤 뜨더라...

분명 나만 그런거 아니지 !?!!??! 하는 마음에 어차피 코드도 출력 제대로 되고,

사실상 중요한 부분은 다 맞았다고 생각하고, 사소한 부분만 틀린거라 생각해 바로 구글링 들어갔다.

 

다행히 나만 그런게 아니였다.

 

원인은 공백처리가 제일 큰 문제이다.

 

내가 왜 틀렸는지 코드를 통해 분석해보자.

#include <stdio.h>
int main() {
    printf("         ,r\'\"7\n");
    printf("r`-_   ,'  ,/ \n");
    printf(" \\. \". L_r'   \n");
    printf("   `~\\/       \n");
    printf("      |       \n");
    printf("      |       \n");
    return 0;
}

//보이시는가? 저 우람한 공백이... 개행문자를 띄어써서 그런게 문제같다고?
//물론 저걸 다르게 바꿔도 결과는 똑같다...

#include <stdio.h>
int main() {
    printf("         ,r\'\"7\n");
    printf("r`-_   ,'  ,/ \n");
    printf(" \\. \". L_r'\n   ");
    printf("   `~\\/\n       ");
    printf("      |\n       ");
    printf("      |\n       ");
    return 0;
}

그럼 왜 이렇게 코드를 생각했을까?

 

난 문제를 좀 이상하게 해석해서 그렇다고 생각한다.

우리가 앞전에 푼 고양이, 개 문제는 "()"하고 끝내기만 했지

이런 문자 뒤로 공백은 주지않았다. ex:) "()        " <- 문자 뒤 공백

그래서 나는 이 공백에 신경을썻다.

 

char 로 공백변수 만들어서 공백을 채워보기도 했고, 저렇게 위에 코드처럼 빼보기도 했다.

근데 답을 보고 느낀건데 공백에 그냥 신경을 안썻으면 더 쉽게 풀 수 있었다.

 

*머 공백 처리했는데도 계속 뜨는거면 뭔가 다른게 잘 못 된거일 것 같습니다.

 

 

 

 

 

풀이.


1.

#include <stdio.h>
int main() {
    printf("         ,r\'\"7\n");
    printf("r`-_   ,'  ,/\n");
    printf(" \\. \". L_r'\n");
    printf("   `~\\/\n");
    printf("      |\n");
    printf("      |\n");
    return 0;
}

그냥 이거처럼 뒤에 공백을 다 빼버리면 된다.

이유: 어차피 설정한 값에서 개행적용되서 밑으로 이동하면 자리는 그대로 입력된다.

이미 앞에 공백(스페이스)으로 자리를 다 정해놨기 때문...

 

정말 간단했다... (난 진짜 바본가?)

 

(*백준에서 답을 저로콤 처리하기에 어쩔 수 없는듯... 물론 저 윗코드들도 틀린건 아니라고 본다..)

조건에 맞지 않았으니 틀린거지 암. ㅇㅇ <- 조건이 어디;;?

 

 

 

2. 나의 다른 풀이.

#include <stdio.h>

int main(){

    char a[10]="\\";
    char b[10]="/";
    char e[10]="\'";
    char f[10]="|";
    char g[10]="_";
    char h[10]="-";
    char k[10]="r";
    char i[10]=".";  
    char m[10]="`";
    char z[10]="~";
    char o[10]="L";
    char u[10]="\"";
    char t[10]="7";
    char s[10]=",";

printf("         %s%s%s%s%s\n",s,k,e,u,t);
printf("%s%s%s%s   %s%s  %s%s\n",k,m,h,g,s,e,s,b);
printf(" %s%s %s%s %s%s%s%s\n",a,i,u,i,o,g,k,e);
printf("   %s%s%s%s\n",m,z,a,b);
printf("      %s\n",f);
printf("      %s\n",f);

return 0;
}

(다시봐도 비효율적이야... ㅡㅡ;;)

 


 

Comments