diff --git a/README.md b/README.md index 7afd223..6d751ca 100644 --- a/README.md +++ b/README.md @@ -35,13 +35,23 @@ ## ๐Ÿ“–History [๋ฌธ์ œ ๋ฆฌ์ŠคํŠธ Notion](https://www.notion.so/f74fd92e29754d839503669f3ec1057e?v=80c1fd8071bc45af88811cb316e0f782) +๐Ÿƒweek24 + +|๋ฒˆํ˜ธ|์ œ๋ชฉ| +|:-:|:-:| +|17683|[๋ฐฉ๊ธˆ๊ทธ๊ณก](https://school.programmers.co.kr/learn/courses/30/lessons/17683)| +|42885|[๊ตฌ๋ช…๋ณดํŠธ](https://school.programmers.co.kr/learn/courses/30/lessons/42885)| +|84512|[๋ชจ์Œ์‚ฌ์ „](https://school.programmers.co.kr/learn/courses/30/lessons/84512)| +|86971|[์ „๋ ฅ๋ง์„ ๋‘˜๋กœ ๋‚˜๋ˆ„๊ธฐ](https://school.programmers.co.kr/learn/courses/30/lessons/86971)| + + ๐Ÿƒweek23 |๋ฒˆํ˜ธ|์ œ๋ชฉ| |:-:|:-:| |42584|[์ฃผ์‹๊ฐ€๊ฒฉ](https://school.programmers.co.kr/learn/courses/30/lessons/42584)| |42883|[ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ](https://school.programmers.co.kr/learn/courses/30/lessons/42883)| -|118667|[๋‘ ํ ํ•ฉ ๊ฐ™๊ฒŒ ๋งŒ๋“ค](https://school.programmers.co.kr/learn/courses/30/lessons/118667)| +|118667|[๋‘ ํ ํ•ฉ ๊ฐ™๊ฒŒ ๋งŒ๋“ค๊ธฐ](https://school.programmers.co.kr/learn/courses/30/lessons/118667)| |159993|[๋ฏธ๋กœ ํƒˆ์ถœ](https://school.programmers.co.kr/learn/courses/30/lessons/159993)| ๐Ÿƒweek22 diff --git "a/week24_230706/pg17683_\353\260\251\352\270\210\352\267\270\352\263\241/pg17683_\354\235\264\354\210\230\353\271\210.py" "b/week24_230706/pg17683_\353\260\251\352\270\210\352\267\270\352\263\241/pg17683_\354\235\264\354\210\230\353\271\210.py" new file mode 100644 index 0000000..68ab8bc --- /dev/null +++ "b/week24_230706/pg17683_\353\260\251\352\270\210\352\267\270\352\263\241/pg17683_\354\235\264\354\210\230\353\271\210.py" @@ -0,0 +1,46 @@ +# https://school.programmers.co.kr/learn/courses/30/lessons/17683 +# 0.03ms, 10.3MB / 1.70ms, 10.3MB + +''' +# ๋ฌธ์ œ ์ดํ•ด +- #์ด ์žˆ๊ณ  ์—†๊ณ ์˜ ์ฐจ์ด๋ฅผ ๊ตฌ๋ถ„ํ•ด์ค˜์•ผํ•จ +- ์Œ์•…์€ ๋ฐ˜๋“œ์‹œ ์ฒ˜์Œ๋ถ€ํ„ฐ ์žฌ์ƒ๋˜๋ฉฐ ์Œ์•… ๊ธธ์ด๋ณด๋‹ค ์žฌ์ƒ๋œ ์‹œ๊ฐ„์ด ๊ธธ ๋•Œ๋Š” ์Œ์•…์ด ๋Š๊น€ ์—†์ด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฐ˜๋ณตํ•ด์„œ ์žฌ์ƒ +- ์žฌ์ƒ๋œ ์‹œ๊ฐ„์ด ์งง์„ ๋•Œ๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ์žฌ์ƒ ์‹œ๊ฐ„๋งŒํผ๋งŒ ์žฌ์ƒ +- ์กฐ๊ฑด์ด ์ผ์น˜ํ•˜๋Š” ์Œ์•…์ด ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๋•Œ์—๋Š” ๋ผ๋””์˜ค์—์„œ ์žฌ์ƒ๋œ ์‹œ๊ฐ„์ด ์ œ์ผ ๊ธด ์Œ์•… ์ œ๋ชฉ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์žฌ์ƒ๋œ ์‹œ๊ฐ„๋„ ๊ฐ™์„ ๊ฒฝ์šฐ ๋จผ์ € ์ž…๋ ฅ๋œ ์Œ์•… ์ œ๋ชฉ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. + +# ๋ฌธ์ œ ํ•ด์„ +- # ์ฐจ์ด ๊ตฌ๋ถ„ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด replace ํ™œ์šฉ (์†Œ๋ฌธ์ž๋กœ) +- ์Œ์•…์ด ์‹œ์ž‘, ๋๋‚œ, ์Œ์•… ์ •๋ณด, ์•…๋ณด ์ •๋ณด ๋“ฑ์„ ๊ตฌ๋ถ„์ž๋กœ ๋ถ„๋ฆฌํ•ด์•ผํ•จ +- ์กฐ๊ฑด์— ๋งž์ถฐ์„œ ํฌํ•จ๋˜๋Š”์ง€ ์•ˆ ๋˜๋Š”์ง€ ๋ณ€๊ฒฝ +- .. ์–ด๋ ต.. + +''' + +def replace_code(cc): + cc = cc.replace("C#", "c").replace("D#", "d").replace("F#", "f").replace("G#", "g").replace("A#", "a") + return cc + +def solution(m, musicinfos): + res = [] + + for musicinfo in musicinfos: # ๊ตฌ๋ถ„์ž๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ฐ๊ฐ ์ €์žฅ + info = musicinfo.split(',') + start = info[0].split(':') + end = info[1].split(':') + + # ์žฌ์ƒ ์‹œ๊ฐ„ ๊ตฌํ•˜๊ธฐ๊ณ , ๋„ค์˜ค๊ฐ€ ๊ธฐ์–ตํ•œ ๋ฉœ๋กœ๋””๋กœ ๋ฐ”๊พธ๊ณ  + time = (int(end[0]) - int(start[0])) * 60 + int(end[1]) - int(start[1]) + code = replace_code(info[3]) + # ์žฌ์ƒ ์‹œ๊ฐ„๋งŒํผ์˜ ์ฝ”๋“œ ๊ตฌํ•˜๊ธฐ + code = code * (time // len(code)) + code[:time%len(code)] + + # ๋„ค์˜ค๊ฐ€ ๊ธฐ์–ตํ•˜๋Š” ๋ฉœ๋กœ๋””๊ฐ€ ๊ตฌํ•œ ์ฝ”๋“œ์— ํฌํ•จ๋˜๋Š”์ง€ ํ™•์ธ + if replace_code(m) in code: + res.append([info[2], time]) + + if len(res) == 0: + return "(None)" # ํ›„๋ณด๊ตฐ์— ์—†์„ ์‹œ '(None)' ๋ฐ˜ํ™˜ + + else: + res = sorted(res, key = lambda x: (-x[1])) # ์žฌ์ƒ๋œ ์‹œ๊ฐ„๊ณผ, ์ž…๋ ฅ๋œ ์ˆœ์„œ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ + return res[0][0] diff --git "a/week24_230706/pg17683_\353\260\251\352\270\210\352\267\270\352\263\241/pg17683_\354\240\225\352\264\221\353\260\260.py" "b/week24_230706/pg17683_\353\260\251\352\270\210\352\267\270\352\263\241/pg17683_\354\240\225\352\264\221\353\260\260.py" new file mode 100644 index 0000000..6d999bd --- /dev/null +++ "b/week24_230706/pg17683_\353\260\251\352\270\210\352\267\270\352\263\241/pg17683_\354\240\225\352\264\221\353\260\260.py" @@ -0,0 +1,26 @@ +# ๋ฐฉ๊ธˆ๊ทธ๊ณก +# ํ…Œ์ŠคํŠธ 29 ใ€‰ ํ†ต๊ณผ (1.27ms, 10.5MB) + +def replace_code(s): + return s.replace("C#", "c").replace("D#", "d").replace("F#", "f").replace("G#", "g").replace("A#", "a") + +def change_time(h, m): + return h*60+m + +def solution(m, musicinfos): + answer = '(None)' + m = replace_code(m) + l = 0 + for i in musicinfos: + start, end, song, code = i.split(',') + s_h, s_m = map(int, start.split(':')) + e_h, e_m = map(int, end.split(':')) + start = change_time(s_h, s_m) + end = change_time(e_h, e_m) + now_l = end - start + code = replace_code(code) + code = code*(now_l//len(code))+code[:now_l%len(code)] # ์žฌ์ƒ ๊ธธ์ด๋งŒํผ code ๋Š˜๋ ค์ฃผ๊ธฐ + if m in code and l < now_l: + answer = song + l = now_l + return answer \ No newline at end of file diff --git "a/week24_230706/pg17683_\353\260\251\352\270\210\352\267\270\352\263\241/pg17683_\354\265\234\354\210\230\355\230\204.py" "b/week24_230706/pg17683_\353\260\251\352\270\210\352\267\270\352\263\241/pg17683_\354\265\234\354\210\230\355\230\204.py" new file mode 100644 index 0000000..a5cd15e --- /dev/null +++ "b/week24_230706/pg17683_\353\260\251\352\270\210\352\267\270\352\263\241/pg17683_\354\265\234\354\210\230\355\230\204.py" @@ -0,0 +1,34 @@ +def solution(m, musicinfos): + answer = [] + for string in musicinfos: + s, e, title, music_s = string.split(',') + # ์‹œ๊ฐ„ ๊ณ„์‚ฐ + s_h, s_m = map(int, s.split(':')) + e_h, e_m = map(int, e.split(':')) + run = (e_h - s_h) * 60 + e_m - s_m + + # ์Œ์•…์„ list๋กœ ๋ฐ”๊พธ๊ธฐ + i = 0 + music = [] + while i < len(music_s): + if music_s[i] == '#': + music[-1] += '#' + else: + music.append(music_s[i]) + i += 1 + + # ์žฌ์ƒ ์‹œ๊ฐ„๋™์•ˆ์˜ ์Œ์•… ๋งŒ๋“ค๊ธฐ + run_music = music * (run//len(music)) + music[:run%len(music)] + + # m๊ณผ ์ผ์น˜ํ•˜๋ฉด ์ œ๋ชฉ๊ณผ ์žฌ์ƒ์‹œ๊ฐ„ tuple๋กœ ์ €์žฅ + l = len(m.replace('#', '')) + for j in range(len(run_music)-l+1): + if ''.join(run_music[j:j+l]) == m: + answer.append((title, run)) + + if answer: + # ์žฌ์ƒ์‹œ๊ฐ„ ๊ธด ์ˆœ์œผ๋กœ ์ •๋ ฌ ํ›„ ์ฒซ๋ฒˆ์งธ ํ•ญ๋ชฉ ๋ฐ˜ํ™˜ + answer.sort(key=lambda x: x[1], reverse=True) + return answer[0][0] + else: + return '(None)' \ No newline at end of file diff --git "a/week24_230706/pg17683_\353\260\251\352\270\210\352\267\270\352\263\241/pg17683_\354\265\234\354\235\200\353\271\204.py" "b/week24_230706/pg17683_\353\260\251\352\270\210\352\267\270\352\263\241/pg17683_\354\265\234\354\235\200\353\271\204.py" new file mode 100644 index 0000000..765c082 --- /dev/null +++ "b/week24_230706/pg17683_\353\260\251\352\270\210\352\267\270\352\263\241/pg17683_\354\265\234\354\235\200\353\271\204.py" @@ -0,0 +1,56 @@ +# https://school.programmers.co.kr/learn/courses/30/lessons/17683 + +def time_convert(s): + h, m = map(int, s.split(":")) + return h * 60 + m + + +# ์ƒต์ด ๋ถ™์€ ์Œ์„ ๋‹ค๋ฅธ ๋ฌธ์ž๋กœ ์น˜ํ™˜ +def sharp_convert(note): + sharp = {"C#": "H", "D#": "I", "F#": "J", "G#": "K", "A#": "L"} + for j in range(len(note)-1): + if j + 1 > len(note) - 1: + return note + + tmp = note[j]+note[j+1] + if tmp in sharp: + note = note.replace(tmp, sharp[tmp]) + + return note + + +def solution(m, musicinfos): + answer = '' + musics = [] + m = sharp_convert(m) + + for i in range(len(musicinfos)): + start, end, name, note = musicinfos[i].split(",") + # ์Œ์•…์˜ ์žฌ์ƒ์‹œ๊ฐ„ + time = time_convert(end) - time_convert(start) + note = sharp_convert(note) + + # ์Œ์•… ์žฌ์ƒ์‹œ๊ฐ„์ด ์•…๋ณด๋ณด๋‹ค ์งง์œผ๋ฉด ์žฌ์ƒํ•œ ๋งŒํผ์„ ๋”ฐ๋กœ ์ €์žฅ + if time < len(note): + playing = note[:time] + # ์žฌ์ƒ์‹œ๊ฐ„์ด ์•…๋ณด๋ณด๋‹ค ๊ธธ๋ฉด ์•…๋ณด๋ฅผ ์ด์–ด๋ถ™์—ฌ์„œ ์žฌ์ƒ์‹œ๊ฐ„๋งŒํผ ๋Š˜๋ ค์ฃผ๊ธฐ + else: + playing = note * (time//len(note)) + note[:(time%len(note))] + + # ๋ฉœ๋กœ๋””๊ฐ€ ๊ฒน์น˜๋ฉด [์žฌ์ƒ์‹œ๊ฐ„, ๊ณก ์ด๋ฆ„] ํ˜•์‹์œผ๋กœ ๋ฆฌ์ŠคํŠธ์— ์ €์žฅ + if m in playing: + musics.append([time, name]) + + # ๊ฒน์น˜๋Š” ์Œ์•…์ด ์—†์„ ๊ฒฝ์šฐ + if not musics: + answer = "(None)" + else: + # ๊ฐ€์žฅ ๊ธด ์žฌ์ƒ์‹œ๊ฐ„์„ ๋”ฐ๋กœ ์ €์žฅํ•˜๊ณ  ์ถœ๋ ฅ + max_playing = max(musics, key=lambda x: x[0])[0] + + for time, name in musics: + if time == max_playing: + answer = name + break + + return answer \ No newline at end of file diff --git "a/week24_230706/pg42885_\352\265\254\353\252\205\353\263\264\355\212\270/pg42885_\354\235\264\353\257\274\354\232\261.py" "b/week24_230706/pg42885_\352\265\254\353\252\205\353\263\264\355\212\270/pg42885_\354\235\264\353\257\274\354\232\261.py" new file mode 100644 index 0000000..f4888e7 --- /dev/null +++ "b/week24_230706/pg42885_\352\265\254\353\252\205\353\263\264\355\212\270/pg42885_\354\235\264\353\257\274\354\232\261.py" @@ -0,0 +1,40 @@ +# ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 42885 ๊ตฌ๋ช…๋ณดํŠธ + +from collections import deque + +def solution(people, limit): + answer = 0 + people = deque(sorted(people)) # ์ •๋ ฌํ•ด์„œ deque์— ๋‹ด์Œ + + while people: # ๋ชจ๋“  ์ธ์›์ด ๋น ์งˆ ๋•Œ๊นŒ์ง€ + person = people.pop() # ์ œ์ผ ๋ฌด๊ฑฐ์šด ์ธ์›์„ ํƒœ์›€ + # ํ˜„์žฌ ์ธ์›์—์„œ ์ œ์ผ ๊ฐ€๋ฒผ์šด ์ธ์›์„ ๊ฐ™์ด ํƒœ์šธ ์ˆ˜ ์žˆ์œผ๋ฉด + if len(people) > 0 and person + people[0] <= limit: + people.popleft() # ๊ทธ ์ธ์›๋„ ํƒœ์›€ + answer += 1 # ๋ณดํŠธ + 1 + + return answer + +# ์ •ํ™•์„ฑ ํ…Œ์ŠคํŠธ +# ํ…Œ์ŠคํŠธ 1 ใ€‰ ํ†ต๊ณผ (1.97ms, 10.3MB) +# ํ…Œ์ŠคํŠธ 2 ใ€‰ ํ†ต๊ณผ (0.98ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 3 ใ€‰ ํ†ต๊ณผ (1.58ms, 10.1MB) +# ํ…Œ์ŠคํŠธ 4 ใ€‰ ํ†ต๊ณผ (1.24ms, 10.1MB) +# ํ…Œ์ŠคํŠธ 5 ใ€‰ ํ†ต๊ณผ (0.69ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 6 ใ€‰ ํ†ต๊ณผ (0.41ms, 10.1MB) +# ํ…Œ์ŠคํŠธ 7 ใ€‰ ํ†ต๊ณผ (0.66ms, 10.3MB) +# ํ…Œ์ŠคํŠธ 8 ใ€‰ ํ†ต๊ณผ (0.08ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 9 ใ€‰ ํ†ต๊ณผ (0.12ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 10 ใ€‰ ํ†ต๊ณผ (0.73ms, 10.4MB) +# ํ…Œ์ŠคํŠธ 11 ใ€‰ ํ†ต๊ณผ (0.76ms, 10.3MB) +# ํ…Œ์ŠคํŠธ 12 ใ€‰ ํ†ต๊ณผ (0.57ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 13 ใ€‰ ํ†ต๊ณผ (1.23ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 14 ใ€‰ ํ†ต๊ณผ (0.97ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 15 ใ€‰ ํ†ต๊ณผ (0.14ms, 10.1MB) + +# ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ +# ํ…Œ์ŠคํŠธ 1 ใ€‰ ํ†ต๊ณผ (11.20ms, 11MB) +# ํ…Œ์ŠคํŠธ 2 ใ€‰ ํ†ต๊ณผ (11.78ms, 11MB) +# ํ…Œ์ŠคํŠธ 3 ใ€‰ ํ†ต๊ณผ (10.42ms, 11.1MB) +# ํ…Œ์ŠคํŠธ 4 ใ€‰ ํ†ต๊ณผ (13.13ms, 11.1MB) +# ํ…Œ์ŠคํŠธ 5 ใ€‰ ํ†ต๊ณผ (11.18ms, 11MB) \ No newline at end of file diff --git "a/week24_230706/pg42885_\352\265\254\353\252\205\353\263\264\355\212\270/pg42885_\354\235\264\354\210\230\353\271\210.py" "b/week24_230706/pg42885_\352\265\254\353\252\205\353\263\264\355\212\270/pg42885_\354\235\264\354\210\230\353\271\210.py" new file mode 100644 index 0000000..c85ab91 --- /dev/null +++ "b/week24_230706/pg42885_\352\265\254\353\252\205\353\263\264\355\212\270/pg42885_\354\235\264\354\210\230\353\271\210.py" @@ -0,0 +1,45 @@ +# https://school.programmers.co.kr/learn/courses/30/lessons/42885 +# 0.07ms, 10MB / 1.57ms, 10.3MB (์ •ํ™•์„ฑ ํ…Œ์ŠคํŠธ) +# 11.33ms, 10.7MB / 29.87ms, 10.5MB (ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ) + + +''' +# ๋ฌธ์ œ ์ดํ•ด +- ๋ณดํŠธ๋Š” 2๋ช…์”ฉ๋งŒ ํƒˆ ์ˆ˜ ์žˆ๊ณ , ๋ฌด๊ฒŒ์ œํ•œ์ด ์žˆ์Œ +- ๊ตฌ๋ช… ๋ณดํŠธ๋ฅผ ์ตœ๋Œ€ํ•œ ์ ๊ฒŒ ์‚ฌ์šฉํ•ด์„œ ๋ชจ๋“  ์‚ฌ๋žŒ์„ ๊ตฌ์ถœํ•ด์•ผํ•จ + +# ๋ฌธ์ œ ํ•ด์„ +- ์ตœ๋Œ€ํ•œ ์ ๊ฒŒ ๋ชจ๋“  ์‚ฌ๋žŒ ๊ตฌ์ถœ -> "๊ทธ๋ฆฌ๋””" ํ™œ์šฉ +- ๊ฐ€์žฅ ์ ์€ ๋ณดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด? + : ๊ฐ€์žฅ ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ์„ ๋จผ์ € ํƒœ์šฐ๊ณ , ๋‚จ์€ 1์ž๋ฆฌ๋ฅผ ์ œ์ผ ๊ฐ€๋ฒผ์šด ์‚ฌ๋žŒ๋ถ€ํ„ฐ ๊ณ ๋ คํ•ด์•ผํ•จ +-> ๋”ฐ๋ผ์„œ, "sort์™€ queue๋ฅผ ํ™œ์šฉํ•˜์—ฌ, ๊ฐ€์žฅ ๋งŽ์ด ๋‚˜๊ฐ€๋Š” ์‚ฌ๋žŒ๊ณผ ์ ๊ฒŒ ๋‚˜๊ฐ€๋Š” ์‚ฌ๋žŒ์„ popํ•˜์—ฌ ๊ณ„์‚ฐ" + +''' + +from collections import deque + +def solution(people, limit): + boat = 0 + people.sort() # ์‚ฌ๋žŒ๋“ค์˜ ๋ฌด๊ฒŒ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ + + q = deque(people) + while q: + if len(q) >= 2: + # ์ œ์ผ ๋งŽ์ด ๋‚˜๊ฐ€๋Š” ์‚ฌ๋žŒ๊ณผ ์ ๊ฒŒ ๋‚˜๊ฐ€๋Š” ์‚ฌ๋žŒ์„ ๋”ํ•ด์„œ limit๊ณผ ๋น„๊ต + + if q[0] + q[-1] <= limit: # limit๋ณด๋‹ค ์ ๊ฒŒ ๋‚˜๊ฐ„๋‹ค๋ฉด, ๊ทธ ๋‘ ์‚ฌ๋žŒ์„ popํ•˜๊ณ , ๋ณดํŠธ ์ˆ˜๋ฅผ ํ•˜๋‚˜ ์ฆ๊ฐ€ + q.pop() + q.popleft() + boat += 1 # ๋ณดํŠธ๋ฅผ ํƒ€๊ณ  ๋‚˜๊ฐ€๋Š” ๊ฒƒ! + + elif q[0] + q[-1] > limit: # limit์„ ์ดˆ๊ณผํ•œ๋‹ค๋ฉด, ๋ฌด๊ฑฐ์šด ํ•œ ์‚ฌ๋žŒ๋งŒ ๋ณดํŠธ๋ฅผ ํƒ€๊ณ  ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ์Œ + q.pop() + boat += 1 + else: + # ์ œ์ผ ๊ฐ€๋ฒผ์šด ์‚ฌ๋žŒ ํ•œ ์‚ฌ๋žŒ์ด ๋‚จ์•˜์„ ๊ฒƒ + if q[0] <= limit: + q.pop() + boat += 1 + return boat + + diff --git "a/week24_230706/pg42885_\352\265\254\353\252\205\353\263\264\355\212\270/pg42885_\354\240\225\352\264\221\353\260\260.py" "b/week24_230706/pg42885_\352\265\254\353\252\205\353\263\264\355\212\270/pg42885_\354\240\225\352\264\221\353\260\260.py" new file mode 100644 index 0000000..f972e24 --- /dev/null +++ "b/week24_230706/pg42885_\352\265\254\353\252\205\353\263\264\355\212\270/pg42885_\354\240\225\352\264\221\353\260\260.py" @@ -0,0 +1,15 @@ +# ๊ตฌ๋ช…๋ณดํŠธ +# ํ…Œ์ŠคํŠธ 2 ใ€‰ ํ†ต๊ณผ (10.06ms, 10.6MB) + +def solution(people, limit): + answer = 0 + people.sort() + + s = 0 + e = len(people) - 1 + while s <= e: + if people[s] + people[e] <= limit: + s += 1 + answer += 1 + e -= 1 + return answer \ No newline at end of file diff --git "a/week24_230706/pg42885_\352\265\254\353\252\205\353\263\264\355\212\270/pg42885_\354\265\234\354\210\230\355\230\204.py" "b/week24_230706/pg42885_\352\265\254\353\252\205\353\263\264\355\212\270/pg42885_\354\265\234\354\210\230\355\230\204.py" new file mode 100644 index 0000000..23708b6 --- /dev/null +++ "b/week24_230706/pg42885_\352\265\254\353\252\205\353\263\264\355\212\270/pg42885_\354\265\234\354\210\230\355\230\204.py" @@ -0,0 +1,40 @@ +# ์ •ํ™•์„ฑ: 75 / 75 +# ํšจ์œจ์„ฑ: 10 / 25 +# ํ•ฉ๊ณ„: 85.0 / 100.0 + +def solution(people, limit): + people.sort() + check = [False] * len(people) + i = 0 + ans = 0 + + while 1: + # ๋ฐฉ๋ฌธํ•œ ๊ฒฝ์šฐ ๊ฑด๋„ˆ๋›ฐ๊ธฐ + if check[i]: + i += 1 + continue + + # ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ + # ์–ด์ฐจํ”ผ ํƒœ์›Œ์•ผํ•˜๋ฏ€๋กœ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ & ans +1ํ•˜๊ณ  ์‹œ์ž‘ + check[i] = True + ans += 1 + + # ๊ฐ™์ด ํƒˆ ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ ์ค‘ ๋ฌด๊ฒŒ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ๋‚˜๊ฐ€๋Š” ์‚ฌ๋žŒ ๊ณ ๋ฅด๊ธฐ + max_pair = 0 + for j in range(i+1,len(people)): + if not check[j] and people[i] + people[j] <= limit: + max_pair = j + else: + break + + # ๊ฐ™์ด ํƒˆ ์ˆ˜ ์—†๋Š” ์‚ฌ๋žŒ์ด ์—†์œผ๋ฉด ๋’ค์—๋„ ์–ด์ฐจํ”ผ ์—†์œผ๋ฏ€๋กœ break + if max_pair == 0: + break + else: + check[max_pair] = True + i += 1 + + # ๋ณดํŠธ์— ๋ชป ํƒ„ ์‚ฌ๋žŒ ๋ณดํŠธ ํ•˜๋‚˜์”ฉ ์จ์•ผํ•จ + ans += len(check) - sum(check) + + return ans \ No newline at end of file diff --git "a/week24_230706/pg42885_\352\265\254\353\252\205\353\263\264\355\212\270/pg42885_\354\265\234\354\235\200\353\271\204.py" "b/week24_230706/pg42885_\352\265\254\353\252\205\353\263\264\355\212\270/pg42885_\354\265\234\354\235\200\353\271\204.py" new file mode 100644 index 0000000..411134d --- /dev/null +++ "b/week24_230706/pg42885_\352\265\254\353\252\205\353\263\264\355\212\270/pg42885_\354\265\234\354\235\200\353\271\204.py" @@ -0,0 +1,27 @@ +# https://school.programmers.co.kr/learn/courses/30/lessons/42885 + +from collections import deque + +def solution(people, limit): + answer = 0 + # ๋ฌด๊ฒŒ์ˆœ์œผ๋กœ ์ •๋ ฌ + people = deque(sorted(people)) + + while people: + if len(people) > 1: + # ๊ฐ€์žฅ ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ๊ณผ ๊ฐ€์žฅ ๊ฐ€๋ฒผ์šด ์‚ฌ๋žŒ์„ ํƒœ์› ์„ ๋•Œ ๋ฌด๊ฒŒ ์ œํ•œ์„ ๋„˜์œผ๋ฉด + # ๊ฐ€์žฅ ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ๋งŒ ๋ณด๋‚ด๊ธฐ + if people[0] + people[-1] > limit: + people.pop() + + # ์ œํ•œ์„ ๋„˜์ง€ ์•Š์œผ๋ฉด ๋‘˜ ๋‹ค ํƒœ์šฐ๊ธฐ + else: + people.popleft() + people.pop() + + else: + people.pop() + + answer += 1 + + return answer \ No newline at end of file diff --git "a/week24_230706/pg84512_\353\252\250\354\235\214\354\202\254\354\240\204/pg84512_\354\235\264\353\257\274\354\232\261.py" "b/week24_230706/pg84512_\353\252\250\354\235\214\354\202\254\354\240\204/pg84512_\354\235\264\353\257\274\354\232\261.py" new file mode 100644 index 0000000..2131fba --- /dev/null +++ "b/week24_230706/pg84512_\353\252\250\354\235\214\354\202\254\354\240\204/pg84512_\354\235\264\353\257\274\354\232\261.py" @@ -0,0 +1,67 @@ +# ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 84512 ๋ชจ์Œ์‚ฌ์ „ + +cnt = 0 +def dfs(q,word): + global cnt, answer + if q == word: + answer = cnt + return + + if len(q) == 5: return + + li = ['A','E','I','O','U'] + for i in range(5): + cnt += 1 + q.append(li[i]) + dfs(q,word) + q.pop() + + return + +def solution(word): + word = list(word) + q = [] + dfs(q,word) + + return answer + +# ํ…Œ์ŠคํŠธ 1 ใ€‰ ํ†ต๊ณผ (1.25ms, 10.1MB) +# ํ…Œ์ŠคํŠธ 2 ใ€‰ ํ†ต๊ณผ (1.43ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 3 ใ€‰ ํ†ต๊ณผ (1.42ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 4 ใ€‰ ํ†ต๊ณผ (1.32ms, 10.3MB) +# ํ…Œ์ŠคํŠธ 5 ใ€‰ ํ†ต๊ณผ (1.34ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 6 ใ€‰ ํ†ต๊ณผ (1.30ms, 10.3MB) +# ํ…Œ์ŠคํŠธ 7 ใ€‰ ํ†ต๊ณผ (2.41ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 8 ใ€‰ ํ†ต๊ณผ (1.60ms, 10.1MB) +# ํ…Œ์ŠคํŠธ 9 ใ€‰ ํ†ต๊ณผ (1.29ms, 10.3MB) +# ํ…Œ์ŠคํŠธ 10 ใ€‰ ํ†ต๊ณผ (1.87ms, 10.1MB) +# ํ…Œ์ŠคํŠธ 11 ใ€‰ ํ†ต๊ณผ (2.28ms, 10.1MB) +# ํ…Œ์ŠคํŠธ 12 ใ€‰ ํ†ต๊ณผ (2.24ms, 10.1MB) +# ํ…Œ์ŠคํŠธ 13 ใ€‰ ํ†ต๊ณผ (2.03ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 14 ใ€‰ ํ†ต๊ณผ (1.33ms, 10.1MB) +# ํ…Œ์ŠคํŠธ 15 ใ€‰ ํ†ต๊ณผ (1.30ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 16 ใ€‰ ํ†ต๊ณผ (1.44ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 17 ใ€‰ ํ†ต๊ณผ (1.40ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 18 ใ€‰ ํ†ต๊ณผ (2.51ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 19 ใ€‰ ํ†ต๊ณผ (2.58ms, 10.1MB) +# ํ…Œ์ŠคํŠธ 20 ใ€‰ ํ†ต๊ณผ (1.37ms, 10.3MB) +# ํ…Œ์ŠคํŠธ 21 ใ€‰ ํ†ต๊ณผ (1.49ms, 10.1MB) +# ํ…Œ์ŠคํŠธ 22 ใ€‰ ํ†ต๊ณผ (1.94ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 23 ใ€‰ ํ†ต๊ณผ (2.82ms, 10.3MB) +# ํ…Œ์ŠคํŠธ 24 ใ€‰ ํ†ต๊ณผ (2.45ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 25 ใ€‰ ํ†ต๊ณผ (1.37ms, 10.1MB) +# ํ…Œ์ŠคํŠธ 26 ใ€‰ ํ†ต๊ณผ (1.71ms, 10.1MB) +# ํ…Œ์ŠคํŠธ 27 ใ€‰ ํ†ต๊ณผ (1.34ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 28 ใ€‰ ํ†ต๊ณผ (2.57ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 29 ใ€‰ ํ†ต๊ณผ (1.36ms, 10.3MB) +# ํ…Œ์ŠคํŠธ 30 ใ€‰ ํ†ต๊ณผ (1.22ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 31 ใ€‰ ํ†ต๊ณผ (1.27ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 32 ใ€‰ ํ†ต๊ณผ (2.63ms, 10.3MB) +# ํ…Œ์ŠคํŠธ 33 ใ€‰ ํ†ต๊ณผ (1.45ms, 10.1MB) +# ํ…Œ์ŠคํŠธ 34 ใ€‰ ํ†ต๊ณผ (1.24ms, 10.1MB) +# ํ…Œ์ŠคํŠธ 35 ใ€‰ ํ†ต๊ณผ (2.13ms, 10.3MB) +# ํ…Œ์ŠคํŠธ 36 ใ€‰ ํ†ต๊ณผ (1.34ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 37 ใ€‰ ํ†ต๊ณผ (2.52ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 38 ใ€‰ ํ†ต๊ณผ (2.58ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 39 ใ€‰ ํ†ต๊ณผ (2.22ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 40 ใ€‰ ํ†ต๊ณผ (2.38ms, 10.3MB) \ No newline at end of file diff --git "a/week24_230706/pg84512_\353\252\250\354\235\214\354\202\254\354\240\204/pg84512_\354\235\264\354\210\230\353\271\210.py" "b/week24_230706/pg84512_\353\252\250\354\235\214\354\202\254\354\240\204/pg84512_\354\235\264\354\210\230\353\271\210.py" new file mode 100644 index 0000000..1156da6 --- /dev/null +++ "b/week24_230706/pg84512_\353\252\250\354\235\214\354\202\254\354\240\204/pg84512_\354\235\264\354\210\230\353\271\210.py" @@ -0,0 +1,25 @@ +# https://school.programmers.co.kr/learn/courses/30/lessons/84512 +# 1.23ms, 10.3MB / 2.50ms, 10.3MB + +''' +# ๋ฌธ์ œ ์ดํ•ด +- ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ์™€ ๊ธธ์ด์— ๋”ฐ๋ผ ์ˆœ์„œ๊ฐ€ ๊ฒฐ์ •๋จ +- 'A', 'E', 'I', 'O', 'U' ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํŒ๋‹จ + +# ๋ฌธ์ œ ํ•ด์„ +- word ๊ธธ์ด๋Š” 1์ด์ƒ 5์ดํ•˜ -> ์ค‘๋ณต์ˆœ์—ด๋กœ ๋ชจ๋“  ์กฐํ•ฉ์„ ๊ณ„์‚ฐํ•˜๊ณ , index๋กœ ์ฐพ๊ธฐ + +''' + +from itertools import product + +def solution(word): + words = [] + for i in range(1, 6): + for j in product(['A', 'E', 'I', 'O', 'U'], repeat=i): # 1์—์„œ 5๊ฐœ๊นŒ์ง€ ๋ชจ๋“  ์กฐํ•ฉ์„ ๊ตฌํ•จ + words.append(''.join(list(j))) # ํ•˜๋‚˜์˜ ๋‹จ์–ด๋กœ + + words.sort() # ์ •๋ ฌ + # ๊ทธ ์ดํ›„ index๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฐพ๊ธฐ + res = words.index(word) + 1 + return res diff --git "a/week24_230706/pg84512_\353\252\250\354\235\214\354\202\254\354\240\204/pg84512_\354\240\225\352\264\221\353\260\260.py" "b/week24_230706/pg84512_\353\252\250\354\235\214\354\202\254\354\240\204/pg84512_\354\240\225\352\264\221\353\260\260.py" new file mode 100644 index 0000000..3507126 --- /dev/null +++ "b/week24_230706/pg84512_\353\252\250\354\235\214\354\202\254\354\240\204/pg84512_\354\240\225\352\264\221\353\260\260.py" @@ -0,0 +1,15 @@ +# ๋ชจ์Œ์‚ฌ์ „ +# ํ…Œ์ŠคํŠธ 17 ใ€‰ ํ†ต๊ณผ (0.11ms, 10.4MB) + +from itertools import product + +V = ['A','E','I','O','U'] +words = [] +for i in range(1, 6): + for j in product(V, repeat=i): + words.append(''.join(j)) +words.sort() # ์‚ฌ์ „ ์ˆœ ์ •๋ ฌ + +def solution(word): + answer = words.index(word)+1 + return answer \ No newline at end of file diff --git "a/week24_230706/pg84512_\353\252\250\354\235\214\354\202\254\354\240\204/pg84512_\354\265\234\354\210\230\355\230\204.py" "b/week24_230706/pg84512_\353\252\250\354\235\214\354\202\254\354\240\204/pg84512_\354\265\234\354\210\230\355\230\204.py" new file mode 100644 index 0000000..bffda4b --- /dev/null +++ "b/week24_230706/pg84512_\353\252\250\354\235\214\354\202\254\354\240\204/pg84512_\354\265\234\354\210\230\355\230\204.py" @@ -0,0 +1,21 @@ +def solution(word): + vowels = ['A', 'E', 'I', 'O', 'U'] + ans = len(word) + + # word ์•ž์—์„œ๋ถ€ํ„ฐ ํ•œ์ž๋ฆฌ์”ฉ ๋ณด๋ฉด์„œ word์ด์ „์— ๋‚˜์™”์„ ๋ชจ๋“  ๋‹จ์–ด count + # ex) word = 'I' + for i in range(len(word)): + n = vowels.index(word[i]) # n = 2 + ans += n # I์•ž์— A,E 2๊ฐœ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ +2 + calc = n # ๊ณ„์‚ฐํ•  ๋ณ€์ˆ˜์— A,E ๋‘๊ฐ€์ง€ ๊ฒฝ์šฐ 2 ์ €์žฅ + for j in range(4-i): # ํ˜„์žฌ ์ž๋ฆฌ ๋ฌธ์ž ๋’ค์— ๋ถ™์ด๋Š” ๊ฒƒ์ด๋ฏ€๋กœ 5-i-1 -> 4-i + calc *= 5 # A, E์— ๋ถ™์ผ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž 5๊ฐ€์ง€์ด๋ฏ€๋กœ ๊ณฑํ•˜๊ธฐ 5 + ans += calc # ์ง€๊ธˆ ๋งŒ๋“  ๋ฌธ์ž์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜ ans์— ๋”ํ•˜๊ธฐ + + return ans + +""" +ans์— word๊ธธ์ด๋งŒํผ์„ ๋‹ด๋Š” ์ด์œ  +ex) 'AAAAA'์ธ ๊ฒฝ์šฐ +'AAAAA'์ด์ „์— 'A', 'AA', 'AAA', 'AAAA'๊ฐ€ ์žˆ๊ณ  'AAAAA'๊นŒ์ง€ ์นด์šดํŠธํ•˜๋ฏ€๋กœ +""" \ No newline at end of file diff --git "a/week24_230706/pg84512_\353\252\250\354\235\214\354\202\254\354\240\204/pg84512_\354\265\234\354\235\200\353\271\204.py" "b/week24_230706/pg84512_\353\252\250\354\235\214\354\202\254\354\240\204/pg84512_\354\265\234\354\235\200\353\271\204.py" new file mode 100644 index 0000000..ac69782 --- /dev/null +++ "b/week24_230706/pg84512_\353\252\250\354\235\214\354\202\254\354\240\204/pg84512_\354\265\234\354\235\200\353\271\204.py" @@ -0,0 +1,27 @@ +# https://school.programmers.co.kr/learn/courses/30/lessons/84512 + +def solution(word): + global answer + answer = 0 + + def recursion(tmp): + global answer + answer += 1 + + if tmp == word: + return True + + if len(tmp) == 5: + return False + + for i in "AEIOU": + flag = recursion(tmp+i) + if flag: + return True + + for i in "AEIOU": + flag = recursion(i) + if flag: + break + + return answer \ No newline at end of file diff --git "a/week24_230706/pg86971_\354\240\204\353\240\245\353\247\235\354\235\204_\353\221\230\353\241\234_\353\202\230\353\210\204\352\270\260/pg86971_\354\235\264\353\257\274\354\232\261.py" "b/week24_230706/pg86971_\354\240\204\353\240\245\353\247\235\354\235\204_\353\221\230\353\241\234_\353\202\230\353\210\204\352\270\260/pg86971_\354\235\264\353\257\274\354\232\261.py" new file mode 100644 index 0000000..9e09fb1 --- /dev/null +++ "b/week24_230706/pg86971_\354\240\204\353\240\245\353\247\235\354\235\204_\353\221\230\353\241\234_\353\202\230\353\210\204\352\270\260/pg86971_\354\235\264\353\257\274\354\232\261.py" @@ -0,0 +1,49 @@ +# ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 86971 ์ „๋ ฅ๋ง์„ ๋‘˜๋กœ ๋‚˜๋ˆ„๊ธฐ + +from collections import deque + +def bfs(x,g,vi): # bfs๋กœ ์—ฐ๊ฒฐ๋œ ์†ก์ „ํƒ‘ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ + q = deque([x]) + vi[x] = 1 + cnt = 1 + + while q: + now = q.popleft() + + for i in g[now]: + if not vi[i]: + vi[i] = 1 + cnt += 1 + q.append(i) + + return cnt + +def solution(n, wires): + answer = n + g = [[] for _ in range(n+1)] + + for v1,v2 in wires: # ๋…ธ๋“œ ์ƒ์„ฑ + g[v1].append(v2) + g[v2].append(v1) + + for a,b in wires: # ๊ฐ„์„  ์ •๋ณด๋ฅผ ๊บผ๋‚ด์„œ + vi = [0] * (n+1) # ๋ฐฉ๋ฌธ ๋ฆฌ์ŠคํŠธ + vi[b] = 1 # b๋ฅผ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌํ•ด์„œ a-b ๊ฐ„์„ ์„ ์—†์•ฐ + cnt = bfs(a,g,vi) # a์™€ ์—ฐ๊ฒฐ๋œ ์†ก์ „ํƒ‘ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๋Š” bfs ์‹คํ–‰ + answer = min(answer, abs(cnt - (n-cnt))) # ์ตœ์†Ÿ๊ฐ’ ๊ฐฑ์‹  + + return answer + +# ํ…Œ์ŠคํŠธ 1 ใ€‰ ํ†ต๊ณผ (0.24ms, 10.1MB) +# ํ…Œ์ŠคํŠธ 2 ใ€‰ ํ†ต๊ณผ (1.20ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 3 ใ€‰ ํ†ต๊ณผ (1.93ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 4 ใ€‰ ํ†ต๊ณผ (3.84ms, 10.3MB) +# ํ…Œ์ŠคํŠธ 5 ใ€‰ ํ†ต๊ณผ (2.07ms, 10.3MB) +# ํ…Œ์ŠคํŠธ 6 ใ€‰ ํ†ต๊ณผ (0.02ms, 10.1MB) +# ํ…Œ์ŠคํŠธ 7 ใ€‰ ํ†ต๊ณผ (0.01ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 8 ใ€‰ ํ†ต๊ณผ (0.07ms, 9.94MB) +# ํ…Œ์ŠคํŠธ 9 ใ€‰ ํ†ต๊ณผ (0.05ms, 10.1MB) +# ํ…Œ์ŠคํŠธ 10 ใ€‰ ํ†ต๊ณผ (1.25ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 11 ใ€‰ ํ†ต๊ณผ (1.12ms, 10.3MB) +# ํ…Œ์ŠคํŠธ 12 ใ€‰ ํ†ต๊ณผ (1.94ms, 10.2MB) +# ํ…Œ์ŠคํŠธ 13 ใ€‰ ํ†ต๊ณผ (1.93ms, 10.2MB) \ No newline at end of file diff --git "a/week24_230706/pg86971_\354\240\204\353\240\245\353\247\235\354\235\204_\353\221\230\353\241\234_\353\202\230\353\210\204\352\270\260/pg86971_\354\265\234\354\210\230\355\230\204.py" "b/week24_230706/pg86971_\354\240\204\353\240\245\353\247\235\354\235\204_\353\221\230\353\241\234_\353\202\230\353\210\204\352\270\260/pg86971_\354\265\234\354\210\230\355\230\204.py" new file mode 100644 index 0000000..740f8f8 --- /dev/null +++ "b/week24_230706/pg86971_\354\240\204\353\240\245\353\247\235\354\235\204_\353\221\230\353\241\234_\353\202\230\353\210\204\352\270\260/pg86971_\354\265\234\354\210\230\355\230\204.py" @@ -0,0 +1,39 @@ +from collections import deque + + +# ์ธ์ ‘ํ–‰๋ ฌ๊ณผ ์ž๋ฅผ ์™€์ด์–ด ์ธ์ž๋กœ ์ „๋‹ฌ +def bfs(arr, cut): + check = [False] * len(arr) + q = deque([1]) + check[1] = True + cnt = 1 + + while q: + x = q.popleft() + for connect in arr[x]: + if connect in cut and x in cut: # ์ž๋ฅด๋Š” ์™€์ด์–ด์ธ ๊ฒฝ์šฐ count์•ˆํ•˜๊ณ  ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ + check[connect] = True + if not check[connect]: + check[connect] = True + q.append(connect) + cnt += 1 + return cnt + + +def solution(n, wires): + # ์ธ์ ‘ํ–‰๋ ฌ ์ƒ์„ฑ + matrix = [[] for _ in range(n+1)] + for w in wires: + a, b = w + matrix[a].append(b) + matrix[b].append(a) + + wires.sort(key=lambda x: x[1]) + ans = 100 # ํฐ ์ˆ˜ 100 + for w in wires: + # ์ด์–ด์ง„ ์ „๋ ฅ๋ง bfsํƒ์ƒ‰์œผ๋กœ count + first = bfs(matrix, w) + second = n - first + ans = min(ans, abs(first-second)) + + return ans \ No newline at end of file diff --git "a/week24_230706/pg86971_\354\240\204\353\240\245\353\247\235\354\235\204_\353\221\230\353\241\234_\353\202\230\353\210\204\352\270\260/pg86971_\354\265\234\354\235\200\353\271\204.py" "b/week24_230706/pg86971_\354\240\204\353\240\245\353\247\235\354\235\204_\353\221\230\353\241\234_\353\202\230\353\210\204\352\270\260/pg86971_\354\265\234\354\235\200\353\271\204.py" new file mode 100644 index 0000000..5f6bece --- /dev/null +++ "b/week24_230706/pg86971_\354\240\204\353\240\245\353\247\235\354\235\204_\353\221\230\353\241\234_\353\202\230\353\210\204\352\270\260/pg86971_\354\265\234\354\235\200\353\271\204.py" @@ -0,0 +1,46 @@ +# https://school.programmers.co.kr/learn/courses/30/lessons/86971 + +from collections import deque + +def bfs(graph, visited): + que = deque() + cnt = 1 + + # graph์˜ ์ฒซ๋ฒˆ์งธ ์›์†Œ ์ฐพ๊ธฐ + for i in range(1, len(graph)): + if graph[i]: + que.append(graph[i][0]) + break + + while que: + now = que.popleft() + visited[now] = True + + for next in graph[now]: + if not visited[next]: + que.append(next) + cnt += 1 + + return cnt + + +def solution(n, wires): + answer = int(1e9) + + for i in range(len(wires)): + graph = [[] for _ in range(n+1)] + + # ์ „์„ ์„ ํ•˜๋‚˜์”ฉ ๋‹ค ๋Š์–ด๋ณด๊ธฐ + for a, b in wires: + if a == wires[i][0] and b == wires[i][1]: + continue + + graph[a].append(b) + graph[b].append(a) + + visited = [False] * (n+1) + cnt = bfs(graph, visited) + + answer = min(answer, abs((n-cnt) - cnt)) + + return answer \ No newline at end of file