yukariko   2년 전

소트 한 결과가 사전순으로 가장 뒷서는것 이라고 나와있는데

대체 뭘 말하는건지  모르겠습니다.

예를들어 

사전순이라 했으니

8 9 10 2 가 있으면

9 8 2 10 이 맞는거겠죠?

그렇다면

9 97 979 라는 숫자가 있으면 

979 > 97 > 9 로 봐서

979 97 9 가 맞는건가요?

아니면 

9 979 97 > 979 97 9 로 봐서

9 979 97 이 맞는건가요?

pichulia   2년 전

979 > 97 > 9 로 봐서

979 97 9  가 979 9 97 보다 사전순으로 뒷선다고 보게 됩니다.

마친가지로 8 9 10 2 예제도

10 > 9 > 8 > 2 로 봐서

9 8 2 10 가 8 9 10 2 보다 사전순으로 뒷서게 되고

10 9 8 2 가 9 8 2 10 보다 사전순으로 뒷서게 됩니다.

"사전순"의 정의는 진짜... 문제마다 다 달라서 확실하게 이거다 라는 기준이 없기 때문에 골치아픈데요;

일단 이 문제에서 의도하는 사전순은 숫자의 크기를 의미하는 것입니다.

yukariko   2년 전

아... 단순히 크기 순이군요..

질문 하나만 더 할게요.

제가 이 문제를 푸는 방법을

현재 기회로 숫자를 맨앞으로 이동가능한 만큼의 범위에서 최대값을 찾고,

기회를 하나씩 줄여가며 앞으로 이동.

기회가 0이되거나 정렬이 완성될때까지 반복.

이렇게 짜봤는데 마지막케이스에서 틀림이 나오더군요..

제 방법에 어디가 잘못된걸까요?

pichulia   2년 전

흠.. 일단 글로 써져있는 방법만 봐선 제 풀이랑 똑같은데..; 아마 코드상의 사소한 오류가 있지 않았을까 싶네요ㅋㅋㅋ

뭐 예를들면

for(j=i; j<= i+s && j<n; j++) 이래야하는데

for(j=i; j< i+s && j<n; j++) 이렇게 짰다거나...

아니면 배열의 크기를 50으로 줬는데 for(i=0; i<n; i++) { t = a[i]; a[i] = a[i+1]; a[i+1] = t;} 이런식으로 오버플로우를 발생시켰거나...

혹은 위에처럼 swap하는 과정에서 swap을 이상하게 했다거나

n=1,2,3 일 때 잘 안나온다거나

yukariko   2년 전

역시 오류가 있으려나요? 제 소스를 첨부할게요.

j<=i+s 대신 k=0, k<=s 로 했는데 결과는 똑같은거같고..

j>i로 해서 배열 크기를 넘어가거나 음수로 갈거 같지도 않은데

어떤 부분이 잘못된걸까요..

계속 질문만 하게 되서 죄송합니다 ㅠㅠ

pichulia   2년 전

죄송. 글을 지금 봤네요ㅋㅋㅋㅋ

이 코드의 가장 큰 문제점은 입력으로 데이터가 "여러개" 들어온다는 것을 간과하고

하나의 정답만 출력한다는 것입니다.

즉, 예제입력의 9개줄을 입력받으면

예제출력처럼 3줄을 출력해야 하는데

님의 코드는 20 10 30 40 50 60 70 만 출력하고 프로그램을 종료해버려서 틀렸다고 하고있습니다.

아래와 같이 하면 여러개의 테스트케이스에 대해서

입력을 받고 출력을 하도록 동작하게 될 것입니다.

예제 입력에 입력데이터가 여러 개 있는것을 보고 눈치를 채셨어야 했는데...ㅠㅠ

어쨋든 가장 잘못한 사람은 데이터가 여러 개 들어올 수 있다는 내용을 쓰지 않은 (그리고 '첫째 줄에' 같은 단어를 적은) 번역자네요(..?!)

yukariko   2년 전

아!!

이게 문제였을 줄이야..

첨에 저도 그렇게 짰는데 출력초과가 나더라구요..

그땐 저렇게 짜지 않아서 답인것도 아니었는데 출력초과라는 메세지만 보고 

처음꺼만 출력하는가보다 라고 생각했는데..

완전 제 불찰입니다..

답변 감사드려요 ㅠㅠ

pichulia   2년 전

뭘요... 암튼 덕분에 for(i=0;i<n;scanf("%d",a+i++)); 잘 배우고갑니다. 유용하게 쓸거같네요

yukariko   2년 전

pichulia

죄송한데 한문제만 더 질문할게요 ..ㅋㅋ;;

https://www.acmicpc.net/problem/9987

이 문제 푸셨던데 저는 테스트 하니 잘 나오는데 틀렸다고 뜨네요.

혹시 저 데이터 안에 인코딩 문제라던가 스펠링 오타라던가 같은 문제가 있는건가요?

pichulia   2년 전

하하 천기누설이라서 말해줄 수 없네요 ㅠㅠ

지금 제 코드 다시 읽어봤을 때 눈에 띄는 이름이 한 5개정도 있었고요

그 중 (제일 뭐같은) 하나만 알려드리자면

668 번 포켓몬의 이름은 Flabébé 입니다. Flabebe가 아니고요.

yukariko   2년 전

ㅋㅋㅋ

감사합니다.

저는 저 bebe 만 바꿔줬더니 정답이 뜨는데요?

뭔가 저절로 바뀐건가..

댓글을 작성하려면 로그인해야 합니다.