일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- CRLF
- git 개행문자
- IP주소
- git 명령어
- 참조타입
- expected linebreaks to be 'lf' but found 'crlf' linebreak-style
- LF
- k번째수
- HTTPS
- eslint
- input 안보임
- 원시값
- expected linebreaks to be 'crlf' but found 'lf' linebreak-style
- password 안보임
- prettier
- react
- 응답코드
- eslint-prettier
- input type password
- git
- REST API
- JadenCase
- 프로그래머스
- 개행문자
- CRA
- git autocrlf
- vscode
- 퀵정렬
- 가장큰수
- lazy-load
Archives
- Today
- Total
우파루파의 개발 기록
[백준] 2750: 수 정렬하기 (삽입 정렬 ver) 본문
안녕하세요.
이번 문제는 백준의 2750번 '수 정렬하기' 입니다.
버블 정렬로도 풀어보고, 병합 정렬로도 풀어보고, 선택 정렬로도 풀어보고.. 이 문제는 여러 방식으로 풀어봤습니다.
이번엔 삽입 정렬에 대해서만 작성합니다.
문제
알고리즘 캔버스
코드
n = int(input())
result = [int(input()) for i in range(n)]
for i in range(1, n):
value = result[i]
j = i
while j > 0 and result[j-1] > value:
result[j] = result[j-1]
j -= 1
result[j] = value
print(*result, sep="\n")
제약
- N(1 ≤ N ≤ 1,000)
- 둘째 줄부터 N개의 줄에는 수
- 절댓값이 1,000보다 작거나 같은 정수
- 수는 중복되지 않음
- 출력은 오름차순으로
- 한 줄에 하나씩 출력
아이디어
- 삽입 정렬로 구현한다.
- 삽입 정렬의 핵심은 탐색 대상의 이전 배열 요소는 모두 정렬 된 것으로 간주한다는 것.
아이디어 상세
- n을 입력받고, 배열을 리스트 컴프리헨션으로 result 변수에 입력 받는다.
- 먼저 range(1, n)(1번째 인덱스를 시작) 순회를 시작한다.
- 왜냐면 0번째 데이터는 이미 그 자체로 정렬된 데이터로 본다.
- 현재 탐색 대상의 원본 데이터를 따로 value 변수에 복사해둔다. (원본 자리의 데이터는 나보다 큰 값이 있다면 옮겨져야 함)
- 이미 정렬된 데이터(앞)를 순회하며 대상 값이 들어갈 자리를 찾아야 한다.
- While 문을 시작한다.
- 조건은 j가 0보다 커야 하고, (최소 인덱스 1까지만 탐색)
- result[j-1] 데이터가 대상 값보다 클 때까지 탐색을 진행한다.
- value보다 큰 값을 오른쪽으로 한칸씩 밀어준다.
- result[j] 위치가 현재 탐색 대상이 존재할 위치이므로 대상을 위치시킨다.
- 만약 제자리에 다시 옮겨지는 게 아니라면, 대상을 위치시키기 전엔 result[j]와 result[j+1]은 같은 값이 들어있게 된다 (중복값).
- While 문을 시작한다.
- result를 print 한다.
시간 복잡도 (Big-O)
- O(N^2)
테스트 케이스
[입력]
5
5
2
3
4
1
[출력]
1
2
3
4
5
감사합니다.
'development > 알고리즘' 카테고리의 다른 글
[백준] 1935: 후위 표기식 2 (1) | 2024.06.18 |
---|---|
[백준] 17299: 오등큰수 (+ 오큰수 문제에 대한 잡담) (0) | 2024.06.18 |
[백준] 2002: 추월 (0) | 2024.04.12 |
[프로그래머스] 60057: 2020 KAKAO BLIND RECRUITMENT > 문자열 압축 (0) | 2024.04.05 |
[프로그래머스] 120812: 최빈값 (1) | 2024.03.29 |