인프런 커뮤니티 질문&답변
풀이에 대한 질문 있습니다!
해결된 질문
작성
·
158
0
항상 강좌 잘 듣고 있습니다. 1년차 개발자인데 알고리즘이 너무 약하고 항상 코딩 테스트 때문에 걱정이였는데. 이렇게라도 시작할수 있고 꾸준히 공부할 수 있어서 다행이라고 생각합니다. 저 같이 알고리즘을 힘들어하는 많은 분들이 도움을 받을 수 있도록 더 많은 강의 만들어 주시면 감사하겠습니다. 늘 감사합니다.
---------------------------------------------------------
강의를 듣기에 앞서 제 스스로 채점을 해보고 강의를 듣고 있습니다. 그런데 이게 테스트 케이스 5개를 success 받아 100점이면 그래도 나름대로 괜찮은 로직을 구현했다고 볼 수 있을까요?
처음에는 시간 제한으로 통과하지 못했지만 조금 효율적으로 고치긴 했는데 강사님처럼 깔끔?한 방법은 아닌거 같아서요!
어쩌면 비효율적일수도 있구요!
-------------------
#include <iostream>
using namespace std;
int arr[100000];
int main() {
int i, j, k, cnt = 0, N, max = -2147000000, flag = 0;
scanf("%d", &N);
for(i = 0; i < N; i++) {
scanf("%d", &arr[i]);
}
for(i = 0; i < N; i++) {
for(j = i + 1; j < N; j++) {
cnt = 1;
flag = 0;
for(k = i; k < j; k++) {
if(arr[k] > arr[k + 1]) {
flag = 1;
break;
}
cnt++;
}
if(flag == 1) break;
if(max < cnt) max = cnt;
}
}
printf("%d", max);
return 0;
}
--------------------------------
반복문이 3번돌아서 별루인거 같긴 합니다..
답변 1
0
김태원
지식공유자
감사합니다^^
스스로 코드를 짜보고 도전해보는 것은 실력을 향상시키는데 매우 중요합니다. 열심히 하는 모습 너무 좋습니다.
사실 이 문제는 2중 for문만 돌려도 100점이 나오지 않도록 하는게 목적이었습니다. 채점폴더를 수정해 올려놓도록 하겠습니다.
아래 코드처럼 2중 for문 정도로 했었으면 좋지 않았을 까 생각합니다.
#include <iostream>
using namespace std;
int arr[100000];
int main() {
int i, j, k, cnt = 0, N, max = -2147000000, flag = 0;
scanf("%d", &N);
for(i = 0; i < N; i++) {
scanf("%d", &arr[i]);
}
for(i = 0; i < N; i++) {
cnt=1;
for(j = i; j < N-1; j++) {
if(arr[j]<=arr[j+1]) cnt++;
else break;
}
if(cnt>max) max=cnt;
}
printf("%d", max);
return 0;
}
열심히 하시는 분이시니 머지않아 곧 실력자가 되실 겁니다. 화이팅하세요^^





