큰 수 출력하기 JavaScript 풀이

2026.09.12·수정 2026.09.13·약 4분·작성: 해비·블로그 소개

핵심 요약

첫 번째 수는 항상 출력하고, 두 번째 수부터는 바로 앞 원소보다 큰 경우에만 결과에 추가합니다. 한 번의 배열 순회로 해결할 수 있습니다.

문제

N개의 정수가 주어질 때 각 수를 왼쪽부터 확인하여 바로 앞 수보다 큰 값만 출력하는 문제입니다. 첫 번째 수는 비교할 앞 수가 없으므로 조건과 관계없이 항상 출력합니다.

입력: 첫째 줄에 정수의 개수 N이 주어지고, 둘째 줄에 N개의 정수가 공백으로 구분되어 주어집니다. N의 범위는 1 이상 100 이하입니다.

출력: 조건을 만족하는 수를 입력 순서대로 한 줄에 공백으로 구분해 출력합니다.

예제 입력 비교 결과 예제 출력
6
7 3 9 5 6 12
7은 항상 선택, 9·6·12는 각각 바로 앞 수보다 큼 7 9 6 12

풀이와 정답

풀이와 정답 보기 (클릭)

비교 기준은 지금까지 나온 최댓값이 아니라 현재 원소의 바로 앞 원소입니다. 예를 들어 9 다음에 5가 오면 5는 제외되지만, 그 다음 6은 5보다 크므로 선택됩니다.

첫 원소를 결과 배열에 먼저 넣은 다음 인덱스 1부터 끝까지 순회합니다. 현재 값이 numbers[index - 1]보다 클 때만 결과에 추가하면 입력 순서도 자연스럽게 유지됩니다.

알고리즘 설계

정수 배열을 왼쪽부터 비교해 앞 수보다 큰 값만 결과에 남기는 과정

  1. 첫 번째 수를 결과 배열에 넣습니다.
  2. 두 번째 수부터 현재 값과 바로 앞 값을 비교합니다.
  3. 현재 값이 더 클 때만 결과 배열에 추가합니다.
  4. 선택된 값들을 공백으로 이어 출력합니다.

이 방식은 주어진 코드를 그대로 살리면서 온라인 저지의 Node.js 표준 입력 형식에 맞춘 풀이입니다. 배열을 정렬하면 원래의 인접 관계가 사라지므로 정렬하지 않습니다.

JavaScript 풀이

인접한 두 값을 비교하는 창을 한 칸씩 이동하며 큰 값을 선택하는 흐름

const fs = require("fs");

const input = fs.readFileSync(0, "utf8").trim().split(/s+/).map(Number);
const count = input[0];
const numbers = input.slice(1, count + 1);

const answer = [numbers[0]];

for (let index = 1; index < numbers.length; index += 1) {
  if (numbers[index] > numbers[index - 1]) {
    answer.push(numbers[index]);
  }
}

console.log(answer.join(" "));

split(/s+/)은 공백과 줄바꿈을 함께 구분하므로 LF와 CRLF 입력을 모두 처리합니다. trim()은 문자열 앞뒤의 불필요한 공백과 줄바꿈을 제거합니다.

복잡도와 검증

정수 N개를 한 번 순회하므로 시간 복잡도는 O(N)입니다. 입력 배열과 출력 배열은 각각 O(N) 공간을 사용하며, 출력 배열을 제외한 알고리즘의 추가 공간은 O(1)입니다.

검증 항목 입력 특징 기대 결과
원문 예제 증가와 감소가 섞임 7 9 6 12
원소 1개 비교 대상 없음 첫 수만 출력
내림차순 뒤의 수가 모두 작음 첫 수만 출력
같은 값 현재 값과 앞 값이 같음 같은 값은 선택하지 않음

반복문과 배열 출력의 기본 흐름을 더 연습하려면 1부터 N까지 합 출력하기 풀이도 함께 살펴보실 수 있습니다.

풀이 전에 확인할 순서

  1. 입력값과 출력값을 한 문장으로 다시 적습니다.
  2. 반복할 대상과 비교·저장할 값을 정합니다.
  3. 필요한 자료구조와 시간복잡도를 예상합니다.
  4. 코드를 보기 전에 손으로 작은 예제를 계산합니다.
힌트: 큰 수 출력하기 JavaScript 풀이

정답 코드를 바로 따라 쓰기보다, 본문에서 값이 갱신되는 조건과 반복 범위를 먼저 찾으세요. 반복 한 번마다 반드시 유지되어야 하는 값이 무엇인지 적으면 풀이의 중심 변수를 고르기 쉽습니다.

테스트 확인

  • 가능한 가장 작은 입력
  • 같은 값이나 문자가 반복되는 입력
  • 정답이 처음 또는 마지막 위치에서 결정되는 입력
  • 입력 제한에 가까운 경우의 실행 시간

확인 결과: 본문의 예제뿐 아니라 위 경계 사례에서도 예상값과 실제 출력이 같아야 풀이가 완료됩니다.

이 글이 도움이 되었나요?

조회 중

코딩테스트 JavaScript 학습 순서

필수 49개 · 전체 49개

읽음 기록 관리

전체 과정 목차 (49개)
  1. 필수 길잡이 · 코딩테스트 JS 자료구조 로드맵: 배열, 해시, 스택, 투 포인터 순서
  2. 필수 학습 · 세 수 중 최솟값 JavaScript 조건문 풀이 정리
  3. 필수 학습 · 삼각형 판별하기 JavaScript 풀이
  4. 필수 학습 · 연필 개수 JavaScript 풀이
  5. 필수 학습 · 1부터 N까지 합 출력하기 JavaScript 풀이
  6. 필수 학습 · 최솟값 구하기 JavaScript 풀이|배열 순회와 비교 갱신 원리
  7. 필수 학습 · 홀수 JavaScript 풀이: 조건 판별과 결과 처리 정리
  8. 필수 학습 · 10부제 JavaScript 풀이: 끝자리 비교로 위반 차량 수 세기
  9. 필수 학습 · A를 #으로 JavaScript 풀이: 문자열 순회와 치환
  10. 필수 학습 · 문자 찾기 JavaScript 풀이: 문자열 순회로 개수 세기
  11. 필수 학습 · 대문자 찾기 JavaScript 풀이
  12. 필수 학습 · 대문자로 통일 JavaScript 풀이
  13. 필수 학습 · 대소문자 변환 JavaScript 풀이
  14. 필수 학습 · 일곱 난쟁이 JavaScript 풀이: 두 명을 제외하는 완전탐색
  15. 필수 학습 · 코딩테스트 JS Map 풀이: 학급 회장 득표수 세기
  16. 필수 학습 · 코딩테스트 JS 스택 풀이: 올바른 괄호 검증하기
  17. 필수 학습 · 코딩테스트 JS 스택 풀이: 괄호문자 제거하기
  18. 필수 학습 · 코딩테스트 JS 스택 풀이: 크레인 인형뽑기 처리법
  19. 필수 학습 · 코딩테스트 JS 스택 풀이: 후위식 연산 계산하기
  20. 필수 학습 · 코딩테스트 JS 스택 풀이: 쇠막대기 레이저 절단 개수 세기
  21. 필수 학습 · 코딩테스트 JS 투 포인터 풀이: 두 정렬 배열 합치기
  22. 필수 학습 · 코딩테스트 JS 투 포인터 풀이: 공통 원소 추출하기
  23. 필수 학습 · 코딩테스트 JS 슬라이딩 윈도우 풀이: 최대 매출 구간 합 계산하기
  24. 필수 학습 · JavaScript 투 포인터: 합이 M인 연속 부분수열 개수
  25. 필수 학습 · 코딩테스트 JS 해시 풀이: 모든 아나그램 찾기
  26. 필수 학습 · 가장 긴 문자열 JavaScript 풀이
  27. 필수 학습 · 가운데 문자 출력 JavaScript 풀이
  28. 필수 학습 · 중복문자제거 JavaScript 풀이
  29. 필수 학습 · 코딩테스트 JS 고급: 최소 힙으로 다익스트라 최단 경로 구하기
  30. 필수 학습 · 코딩테스트 JS Union-Find: 연결 성분 수와 크기 구하기
  31. 필수 학습 · 코딩테스트 JS Trie: 접두사에 맞는 단어 수 세기
  32. 필수 학습 · 코딩테스트 JS Fenwick Tree: 값 갱신과 구간 합 처리
  33. 필수 학습 · 코딩테스트 JS 세그먼트 트리: 단일 대입과 구간 합
  34. 필수 학습 · 코딩테스트 JS LRU 캐시: 지도 타일 재사용 기록
  35. 필수 학습 · 코딩테스트 JS AVL 트리: 기준 이상 최솟값 찾기
  36. 필수 학습 · 코딩테스트 JS 큐: 상담 창구 대기열 명령 처리
  37. 필수 학습 · 코딩테스트 JS 연결 리스트: 재생 대기 목록 관리
  38. 필수 학습 · JavaScript 원형 덱 연습: 최근 기록 창과 되돌리기
  39. 필수 학습 · JavaScript 해시 테이블 연습: 정규화 문자열 빈도와 등장 순서
  40. 필수 학습 · JavaScript 트리 순회 연습: 깊이별 노드 묶기
  41. 필수 학습 · JavaScript BST 연습: 닫힌 구간의 중복 키 보고서
  42. 필수 학습 · JavaScript 최소 힙 연습: 동률 순서를 지키는 작업 스케줄러
  43. 필수 학습 · JavaScript 그래프 연습: 연결 구역 크기를 작은 순서로 출력하기
  44. 필수 학습 · 중복단어제거 JavaScript 풀이
  45. 필수 학습 · TypeScript 이진 탐색 연습: 숫자 카드 존재 여부 확인
  46. 필수 학습 · 큰 수 출력하기 JavaScript 풀이 현재 글
  47. 필수 학습 · 보이는 학생 JavaScript 풀이
  48. 필수 학습 · 가위바위보 JavaScript 풀이
  49. 필수 학습 · 점수계산 JavaScript 풀이

새 글 받아보기

RSS 리더에서 BlogFlow의 새 글을 확인할 수 있습니다.

RSS 피드 구독하기

댓글 남기기