Skip to content

Commit

Permalink
docs: Add PS study week3 post (#16)
Browse files Browse the repository at this point in the history
  • Loading branch information
nusuy committed Mar 14, 2024
1 parent 25f32a8 commit 0b58da8
Showing 1 changed file with 172 additions and 0 deletions.
172 changes: 172 additions & 0 deletions content/posts/problem_solving/study-week3-binary-search-nusuy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
---
title: 3์ฃผ์ฐจ ์ฝ”ํ…Œ ํ’€์ด ํšŒ๊ณ  - nusuy
image: "../../static/media/asdf.jpg"
date: 2024-03-14
tags:
- problem solving
- algorithm
description: ์ฝ”ํ…Œ ์Šคํ„ฐ๋”” 3์ฃผ์ฐจ ํšŒ๊ณ ๋ก - nusuy
---

> 3์ฃผ์ฐจ ์ฝ”ํ…Œ ํ’€์ด ํšŒ๊ณ 
>
> - ํ’€์ด ์ฃผ์ œ: ์ด๋ถ„ํƒ์ƒ‰
> - ํšŒ๊ณ  ์ž‘์„ฑ์ž: [@nusuy](https://github.com/nusuy)
> ์ฒด๊ฐ ๋‚œ์ด๋„ ๋ถ„๋ฅ˜
>
> - ๐ŸŒง๏ธ: ์ƒ
> - ๐ŸŒค๏ธ: ์ค‘
> - โ˜€๏ธ: ํ•˜
## ํ’€์ด ํšŒ๊ณ 

### ๐ŸŒง๏ธ ์ž…๊ตญ์‹ฌ์‚ฌ

- ํ”Œ๋žซํผ: [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค](https://school.programmers.co.kr/learn/courses/30/lessons/43238)
- ํ’€์ด ์‹œ๊ฐ„: 1์‹œ๊ฐ„ ์ดˆ๊ณผ

1. ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ์‹ฌ์‚ฌ๋ฅผ ๋ฐ›๋Š” ๋ฐ ๋ถ€์กฑํ•˜์ง€๋„, ๋„˜์น˜์ง€๋„ ์•Š๋Š” ์ตœ์ ์˜ ๊ฐ’ ์ฐพ๊ธฐ
2. ์„ค์ • ์‹œ๊ฐ„ ๋™์•ˆ n๋ช… ์ดˆ๊ณผํ–ˆ๋‹ค๋ฉด ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๋งŽ์€ ๊ฒƒ, n๋ช… ๋ฏธ๋งŒ์ด๋ผ๋ฉด ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๋ถ€์กฑํ•œ ๊ฒƒ. (๋‹จ, n๋ช… ์‹ฌ์‚ฌํ–ˆ๋”๋ผ๋„ ์‹œ๊ฐ„์ด ๋‚จ์„ ์ˆ˜ ์žˆ๋‹ค.)
3. input ์ตœ๋Œ€ ๊ธธ์ด๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ๊ธธ๊ณ , ํŠน์ • ๊ฐ’ ์ฐพ๋Š” ๋ฌธ์ œ๋ผ๋ฉด ์ด๋ถ„ํƒ์ƒ‰ ์˜์‹ฌํ•ด๋ณด๊ธฐ

### ๐ŸŒง๏ธ ์ง•๊ฒ€๋‹ค๋ฆฌ

- ํ”Œ๋žซํผ: [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค](https://school.programmers.co.kr/learn/courses/30/lessons/43236)
- ํ’€์ด ์‹œ๊ฐ„: 1์‹œ๊ฐ„ ์ดˆ๊ณผ

1. TLE

```python
from itertools import combinations
def solution(distance, rocks, n):
answer = []

comb = combinations(rocks,n)
for c in comb:
rocks_cp = rocks[:]
for i in range(n):
rocks_cp.remove(c[i])
rocks_cp.append(0)
rocks_cp.append(distance)
rocks_cp.sort()

d = []
for i in range(1,len(rocks_cp)):
d.append(rocks_cp[i]-rocks_cp[i-1])

answer.append(min(d))

return max(answer)
```

- ํƒ์ƒ‰ ๊ธฐ์ค€: ์ตœ์†Œ๊ฐ’
- ๋ฐ”์œ„๋ฅผ n๊ฐœ ์ œ๊ฑฐํ–ˆ์„ ๋•Œ ์ตœ์†Œ๊ฐ’์ด ํƒ์ƒ‰ ๊ธฐ์ค€๊ณผ ๊ฐ™์•„์•ผ ํ•œ๋‹ค.
- ์ฒ˜์Œ ์œ„์น˜๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•˜๊ณ , ๋‹ค์Œ ๋ฐ”์œ„๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๊ฐ€ mid๋ณด๋‹ค ์ž‘์œผ๋ฉด ์ œ๊ฑฐํ•˜๊ณ , ์•„๋‹ˆ๋ฉด ๊ทธ ๋ฐ”์œ„๋กœ ์ด๋™ํ•œ๋‹ค.

### ๐ŸŒง๏ธ ์„ ๋ถ„ ์œ„์˜ ์ 

- ํ”Œ๋žซํผ: [๋ฐฑ์ค€](https://www.acmicpc.net/problem/11663)
- ํ’€์ด ์‹œ๊ฐ„: 1์‹œ๊ฐ„ ์ดˆ๊ณผ

1. ์„ ๋ถ„ ์œ„ ์  ์ค‘ ์ตœ์†Œ๊ฐ’์˜ ์ธ๋ฑ์Šค, ์ตœ๋Œ€๊ฐ’์˜ ์ธ๋ฑ์Šค ๊ตฌํ•˜๊ธฐ
2. ์ตœ์†Œ, ์ตœ๋Œ€ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์—†๋‹ค๋ฉด 0
- ์„ ๋ถ„์˜ ์‹œ์ž‘์ ๋ณด๋‹ค ์ตœ๋Œ€๊ฐ’์ด ์ž‘์€ ๊ฒฝ์šฐ
- ์„ ๋ถ„์˜ ๋์ ๋ณด๋‹ค ์ตœ์†Œ๊ฐ’์ด ํฐ ๊ฒฝ์šฐ
- ์ตœ๋Œ€-์ตœ์†Œ
3. ์ด๋ถ„ํƒ์ƒ‰ ๋Œ€์ƒ์„ ์ž˜ ๊ณ ๋ คํ•˜์ž

### ๐ŸŒค๏ธ IF๋ฌธ ์ข€ ๋Œ€์‹  ์จ์ค˜

- ํ”Œ๋žซํผ: [๋ฐฑ์ค€](https://www.acmicpc.net/problem/19637)
- ํ’€์ด ์‹œ๊ฐ„: 45m 22s

1. WA
- ์ถœ๋ ฅ ๊ฐ€๋Šฅํ•œ ์นญํ˜ธ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ ๋ˆ„๋ฝ
2. TLE

```python
import sys
input = sys.stdin.readline

n, m = map(int, input().split())
titles = []
cp_list = []
for i in range(n):
title, cp = input().split()
if cp not in cp_list:
titles.append(title); cp_list.append(int(cp))

def find_title(cp):
left, right = 0, len(cp_list) - 1
while left <= right:
mid = (left + right) // 2
if cp_list[mid] >= cp:
right = mid - 1
else:
left = mid + 1
print(title[right+1])


for i in range(m):
find_title(int(input()))

```

### โ˜€๏ธ ๋žœ์„  ์ž๋ฅด๊ธฐ

- ํ”Œ๋žซํผ: [๋ฐฑ์ค€](https://www.acmicpc.net/problem/1654)
- ํ’€์ด ์‹œ๊ฐ„: 15m 47s

1. WA
- ๋งŒ๋“ค์–ด์ง„ ๋žœ์„  ๊ฐœ์ˆ˜๊ฐ€ n๋ณด๋‹ค ํด ๊ฒฝ์šฐ๋„ ์ •๋‹ต์ด ๋  ์ˆ˜ ์žˆ๋‹ค.
- ๋”ฐ๋ผ์„œ `mid>=n` ์กฐ๊ฑด์„ ๋งŒ์กฑํ•œ ๊ฒฝ์šฐ `answer`์„ ์ €์žฅํ•ด๋‘๊ณ  ์ด๋ถ„ํƒ์ƒ‰์„ ์žฌ๊ฐœํ•ด์•ผํ•œ๋‹ค.

### ๐ŸŒค๏ธ ์˜ˆ์‚ฐ

- ํ”Œ๋žซํผ: [๋ฐฑ์ค€](https://www.acmicpc.net/problem/2512)
- ํ’€์ด ์‹œ๊ฐ„: 37m 06s

1. TLE
- ์ •๋‹ต์ธ ๊ฒฝ์šฐ `break` ๋ˆ„๋ฝ์œผ๋กœ ์ธํ•ด ๋ฌดํ•œ ๋ฃจํ”„
2. WA (ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค 2 ์‹คํŒจ)
- ์ •๋‹ต์ธ ๊ฒฝ์šฐ๋ฅผ ๋ชจ๋‘ ์ฐพ์•„๋‚ด์ง€ ๋ชปํ•จ
1. ์˜ˆ์‚ฐ ์•ˆ์— ๋”ฑ ๋งž์ถ˜ ๊ฒฝ์šฐ
2. ์˜ˆ์‚ฐ์ด ๋‚จ์ง€๋งŒ, ๋” ์ด์ƒ ๋ถ„๋ฐฐ ๋ถˆ๊ฐ€ํ•œ ๊ฒฝ์šฐ
3. ์˜ˆ์‚ฐ์ด ๋‚จ์ง€๋งŒ, ์š”์ฒญ ์˜ˆ์ƒ์„ ๋ชจ๋‘ ์ถฉ์กฑํ•œ ๊ฒฝ์šฐ
- ์œ„ 3๊ฐ€์ง€์—์„œ 3๋ฒˆ ์กฐ๊ฑด ๋ˆ„๋ฝ

### โ˜€๏ธ ๋‚˜๋ฌด ์ž๋ฅด๊ธฐ

- ํ”Œ๋žซํผ: [๋ฐฑ์ค€](https://www.acmicpc.net/problem/2805)
- ํ’€์ด ์‹œ๊ฐ„: 22m 07s

1. TLE
- ์ž˜๋ฆฐ ๋‚˜๋ฌด ๊ธธ์ด ๊ฒ€์‚ฌ ์ค‘ mid ๊ฐ’์„ ์ดˆ๊ณผํ–ˆ๋‹ค๋ฉด ๋ฐ˜๋ณต๋ฌธ ์ค‘๋‹จ

### ๐ŸŒง๏ธ ๋‘ ์šฉ์•ก

- ํ”Œ๋žซํผ: [๋ฐฑ์ค€](https://www.acmicpc.net/problem/2470)
- ํ’€์ด ์‹œ๊ฐ„: 1์‹œ๊ฐ„ ์ดˆ๊ณผ

1. WA
- ํˆฌํฌ์ธํ„ฐ ์‚ฌ์šฉํ•˜์—ฌ ํ’€์ด

### ๐ŸŒค๏ธ ์ž…๊ตญ์‹ฌ์‚ฌ

- ํ”Œ๋žซํผ: [๋ฐฑ์ค€](https://www.acmicpc.net/problem/3079)
- ํ’€์ด ์‹œ๊ฐ„: 13m 09s

1. `mid//time` โžก๏ธ ํ•˜๋‚˜์˜ ์ž…๊ตญ์‹ฌ์‚ฌ๋Œ€์—์„œ๋Š” ํ•œ ๋ช…๋งŒ ์‹ฌ์‚ฌ ๊ฐ€๋Šฅ
2. ์˜๋ฌธ์ : `times`๋ฅผ ์ •๋ ฌํ•  ํ•„์š”๊ฐ€ ์—†๋Š”๊ฐ€?

### ๐ŸŒค๏ธ ์ƒ‰์ข…์ด์™€ ๊ฐ€์œ„

- ํ”Œ๋žซํผ: [๋ฐฑ์ค€](https://www.acmicpc.net/problem/20444)
- ํ’€์ด ์‹œ๊ฐ„: 43m 19s

1. TLE
- `(๊ฐ€๋กœ ์ ˆ๋‹จ ํšŸ์ˆ˜ +1)*(์„ธ๋กœ ์ ˆ๋‹จ ํšŸ์ˆ˜ +1)=์กฐ๊ฐ ๊ฐœ์ˆ˜` ์ด๋ฏ€๋กœ ์กฐ๊ฐ ๊ฐœ์ˆ˜์— ๋Œ€ํ•œ ์•ฝ์ˆ˜๋ฅผ ๋ฏธ๋ฆฌ ๊ตฌํ•ด๋‘๊ณ ์ž ๋กœ์ง์„ ์ถ”๊ฐ€ํ•ด์„œ ์‹œ๊ฐ„ ์ดˆ๊ณผ
- ์•ฝ์ˆ˜ ๋ฏธ๋ฆฌ ๊ตฌํ•˜๋Š” ๋กœ์ง ์—†์• ๊ณ  ์ด์ง„ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ `[1,k//2]`์œผ๋กœ ์„ค์ •
2. WA
- ์ด์ง„ ํƒ์ƒ‰ ๋Œ€์ƒ์ธ ๊ฐ€๋กœ ์ ˆ๋‹จ ํšŸ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ `count`๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  k(์กฐ๊ฐ ๊ฐœ์ˆ˜)์™€ ๋น„๊ตํ•ด์•ผํ•˜๋Š”๋ฐ n(์ ˆ๋‹จ ํšŸ์ˆ˜)๊ณผ ๋น„๊ต

0 comments on commit 0b58da8

Please sign in to comment.