2017.06.18 22:18
2017.06.18 23:08
문자열 처리는 사실 쉽지 않습니다. 왜냐하면 메모리 주소와 관련되어있기 때문입니다.
이에 대한 자세한 내용은 다음 기회에 이야기하는 것으로 하구요.
현재 코드 상의 문제점은 마지막 printf 문에 있네요. p[i]는 p 문자열의 i번째 '문자'를 의미합니다. 따라서 입출력 제어문자는 %c 이어야 합니다.
2017.06.19 23:09
안녕하세요 저번에 답변해주신것이 도움되었습니다. 제가 테스트할때는 답이 잘 나오는 데 채점할때는 이상합니다.
죄송하지만 다시한번 도움부탁드립니다.
#include <stdio.h>
#include<string.h>
int main()
{
int a = 0, i = 0, len=0;
char p[1100];
scanf("%dn",&a);
//scanf("%s",p);
gets(p);
len = strlen(p);
//printf("%d , (%s)", len, p);
//return 0;
for (i = 0; i < len; i++)
{
if (p[i] != ' '){ printf("%c", p[i]); }
else if (p[i] == ' '){ printf("n"); }
}
}
추천:1 댓글
2017.06.20 22:56
채점 데이터를 면밀히 확인해 보니, 채점 데이터 자체에 오류가 있었습니다.
수정했으니 다시 채점해 보시기 바랍니다.
좋은 오류 찾아주셔서 감사드립니다.
2017.06.19 23:30
00a46 문제를 푼후에 local PC에서 실행을 하면 맞게 나옵니다. 근데 코드 제출을 하면 Line 8에서 제출이 없다고 나오고 있습니다. 체점기에 오류가 있는게 없을지요?
--------------------------------------------
2017.06.20 22:56
채점 데이터를 면밀히 확인해 보니, 채점 데이터 자체에 오류가 있었습니다.
수정했으니 다시 채점해 보시기 바랍니다.
좋은 오류 찾아주셔서 감사드립니다.
2017.07.02 11:38
안녕하세요. 한가지 더 문의 합니다. 이번에는 제가 gets()를 이용하여 제가 다시코드를 만들어봤는데
아래의코드대로 gets() 함수를 쓰면안되는지 의문이 있어 질문 드립니다.
--------------------------------------------------------
//http://www.jynote.net/604
#include<stdio.h>
#include<string.h>
int main()
{
int i=0,len=0;
char a[100];
gets(a);
for(i=0; a[i] != ' '; i++)
{
if(a[i]!=' ')
{
a[i]='n';
}
}
printf("%s",a);
return 0;
}
-------------------------------------------------------
2017.07.02 14:24
gets() 함수를 써도 됩니다. 그러나, 알고리즘은 잘못 되었습니다.
a[i]='n'; 이 부분을 확인해 보세요.. 이게 맞는지...
그리고, len 변수는 어디에 사용하는 건가요? 만들기만 하고 사용하지 않고 있네요..
2017.08.03 22:45
2017.08.05 11:03
배열의 크기를 키워 보세요~ 입력값에 비해서 메모리 공간이 너무 작습니다.
2017.11.11 01:43
아래와 같이 입력하고 제출을 눌렀더니
20번째 케이스(입력 데이터)에서 '접근 위반' 이라고 나옵니다.
'접근 위반' 이 뭔가요..?
-----------------------------------------------------------------------
#include <cstdio>
char arr[10000];
int main()
{
int n, i=0;
scanf("%dn", &n);
gets(arr);
while(arr[i] != 0)
{
if(arr[i]==32)
{
printf("n");
}
else
{
printf("%c", arr[i]);
}
i++;
}
return 0;
}
2017.12.07 01:33
정적 메모리 영역을 침범했다는 의미입니다. 즉, 10번째 데이터가 많은데 배열은 작기 때문에 선언하지 않은 메모리 영역에 값이 저장되는 시도가 이루어졌기 때문이지요...
char arr[10000]; 을 char arr[100000] 으로 변경해 보세요~
2019.10.28 21:06
a= int(input())
b= input()
for k in range(0,len(b)):
if b[k]==" ":
print("\n")
else:
print(b[k], end="")
이를 확인하면 맞게 나오는데, 채점은 다르다고 되있네요. 채점기에 오류가 있나요?
2019.10.28 21:30
확인해 보겠습니다~
2019.10.28 23:24
2가지 문제가 있습니다.
1. 우선 본 사이트의 에디터에서 임시 실행의 출력 결과를 뿌려줄 때 개행 처리에 버그가 있었습니다.
현재는 올바르게 수정되었습니다. 감사합니다.
2. 결과를 보시면, 개행이 2개씩 되어 있는 걸 확인하실 수 있을 겁니다!
파이썬의 print("") 명령문은 자동으로 개행을 합니다. 따라서 print("\n") 이렇게 하면, 자동 개행이 2번이 되는 것입니다.
다음의 코드처럼 해보세요~
a = int(input()) b = input() for k in range(0,len(b)): if b[k]==" ": print("") else: print(b[k], end="")
안녕하세요 제가 이 문제를 풀다 일단 입력한 문자열을 그대로 출력하는코드를 짜고 실행 해봤습니다. 그런데 잘못된 답이 아닌 실행오류라는것을 이유를 몰라 고민중입나다. 아래의코드를 보시고 도움부탁드립니다.
|
|
|
|
|
|
|
|
#include <stdio.h> <---------------------------------------------------------------|
#include<string.h>
int main()
{
int a = 0, i = 0, len=0;
char p[500];
scanf("%d",&a);
scanf("%s",p);
len = strlen(p);
for (i = 0; i < len; i++)
{
printf("%s",p[i]);
}
}