์ „์ฒด ๊ธ€

์ „์ฒด ๊ธ€

    [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ•˜์ƒค๋“œ ์ˆ˜ (๐Ÿ“˜Lv. 1) (Python)

    ๋ฌธ์ œ ๋ฐ”๋กœ ๊ฐ€๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”. programmers.co.kr ํ’€์ด (Python) ์‚ฌ์šฉ ์–ธ์–ด : Python ํ’€์ดํ•œ ๋‚ ์งœ : 2022-04-07 def solution(x): answer = True sum_x = 0 str_x = str(x) for elem in str_x: sum_x += int(elem) if x % sum_x: answer = False return answer ํ’€์ด ๋กœ์ง ๋ฐ ๋ฌธ์ œ ์ ‘๊ทผ ๊ณผ์ • ๊ฒฐ๊ตญ ๋‚ด๊ฐ€ ํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์€ x % (x์˜ ๊ฐ ์ž๋ฆฌ์ˆ˜์˜ ํ•ฉ) == 0 ์ด ์ฐธ์ธ๊ฐ€ ๊ฑฐ์ง“์ธ๊ฐ€๋ฅผ ๋ฐํžˆ๋Š” ๊ฒƒ ๋ฟ์ด๋‹ค. (O(1) ์‹œ๊ฐ„ ๋‚ด์— ์ถฉ๋ถ„ํžˆ ..

    [๋ฐฑ์ค€] 7576๋ฒˆ : ํ† ๋งˆํ†  (๐Ÿฅ‡๊ณจ๋“œ 5) (Python)

    ๋ฌธ์ œ ๋ฐ”๋กœ ๊ฐ€๊ธฐ 7576๋ฒˆ: ํ† ๋งˆํ†  ์ฒซ ์ค„์—๋Š” ์ƒ์ž์˜ ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋‘ ์ •์ˆ˜ M,N์ด ์ฃผ์–ด์ง„๋‹ค. M์€ ์ƒ์ž์˜ ๊ฐ€๋กœ ์นธ์˜ ์ˆ˜, N์€ ์ƒ์ž์˜ ์„ธ๋กœ ์นธ์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋‹จ, 2 โ‰ค M,N โ‰ค 1,000 ์ด๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ๋Š” ํ•˜๋‚˜์˜ ์ƒ์ž์— ์ €์žฅ๋œ ํ† ๋งˆํ†  www.acmicpc.net ํ’€์ด ์‚ฌ์šฉ ์–ธ์–ด : Python ํ’€์ดํ•œ ๋‚ ์งœ : 2023-02-10 from collections import deque # ์ž…๋ ฅ๊ฐ’ ์ฒ˜๋ฆฌ ๋ฐ ํ•„์š” ๋ณ€์ˆ˜ ์„ ์–ธ m, n = tuple(map(int, input().split())) box = [ list(map(int, input().split())) for _ in range(n) ] visited = [ [False] * m for _ in range(n) ] days = [ [..

    [๋ฐฑ์ค€] 15650๋ฒˆ : N๊ณผ M (2) (๐Ÿฅˆ์‹ค๋ฒ„ 2) (Python)

    ๋ฌธ์ œ ๋ฐ”๋กœ ๊ฐ€๊ธฐ 15650๋ฒˆ: N๊ณผ M (2) ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ค‘๋ณต๋˜๋Š” ์ˆ˜์—ด์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ถœ๋ ฅํ•˜๋ฉด ์•ˆ๋˜๋ฉฐ, ๊ฐ ์ˆ˜์—ด์€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. ์ˆ˜์—ด์€ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ์ถœ๋ ฅํ•ด www.acmicpc.net ํ’€์ด ์‚ฌ์šฉ ์–ธ์–ด : Python ํ’€์ดํ•œ ๋‚ ์งœ : 2022-02-10 n, m = tuple(map(int, input().split())) lst = [] def print_lst(): for elem in lst: print(elem, end=" ") print() def choose(curr_num): if curr_num == m + 1: print_lst() for i in range(1, n + 1): if len(lst) >= 1 an..

    [๋ฐฑ์ค€] 1929๋ฒˆ : ์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ (๐Ÿฅˆ์‹ค๋ฒ„ 3) (Python)

    ๋ฌธ์ œ ๋ฐ”๋กœ ๊ฐ€๊ธฐ 1929๋ฒˆ: ์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ ์ฒซ์งธ ์ค„์— ์ž์—ฐ์ˆ˜ M๊ณผ N์ด ๋นˆ ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค M โ‰ค N โ‰ค 1,000,000) M์ด์ƒ N์ดํ•˜์˜ ์†Œ์ˆ˜๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ ์žˆ๋Š” ์ž…๋ ฅ๋งŒ ์ฃผ์–ด์ง„๋‹ค. www.acmicpc.net ํ’€์ด ์‚ฌ์šฉ ์–ธ์–ด : Python ํ’€์ดํ•œ ๋‚ ์งœ : 2022-03-11 m, n = tuple(map(int, input().split())) def isPrime(a): if a == 1 : return False i = 2 while i*i

    [ReactJS] ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ์™€ Custom Hook

    ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ ๊ฐ๊ฐ์˜ ๊ด€์‹ฌ์‚ฌ์— ๋”ฐ๋ผ ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ธฐ๋ฒ• ์ฝ”๋“œ๊ฐ€ ํ•˜๋‚˜์˜ ๊ด€์‹ฌ์‚ฌ๋งŒ ์‹ ๊ฒฝ์“ฐ๋„๋ก ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ์˜ ํŠน์ง• ํŠน์ •ํ•œ ๋ณ€ํ™”์— ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด ์ฝ๊ณ  ์ดํ•ดํ•˜๊ณ  ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ์˜ ๋‹จ์œ„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์–ด ์œ ์ง€ ๋ณด์ˆ˜์— ์šฉ์ดํ•ด์ง„๋‹ค. ํ•˜๋‚˜์˜ ์ฝ”๋“œ๊ฐ€ ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ์„ ๋‹ด๋‹ดํ•˜๊ธฐ์— ์—ฌ๋Ÿฌ ์—ญํ• ์ด ํ˜ผ์žฌ๋œ ์ฝ”๋“œ๋ณด๋‹ค ๋‹จ์œ„๋ณ„๋กœ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์›Œ์ง„๋‹ค. ์ฝ”๋“œ์˜ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๋˜ํ•œ ์‰ฌ์›Œ์ง„๋‹ค. ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ๊ฐ€ ์ž˜ ๋œ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„์™€ ๋†’์€ ์‘์ง‘๋„๋ž€ ํŠน์ง•์ด ๋‚˜ํƒ€๋‚œ๋‹ค. ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„ (Loose Coupling) : ์ฝ”๋“œ๊ฐ€ ์–ฝํ˜€์žˆ์ง€ ์•Š๊ณ  ๊ด€์‹ฌ์‚ฌ์— ๋”ฐ๋ผ ๋…๋ฆฝ์ ์œผ๋กœ ์ž˜ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋‹ค. ๋†’์€ ์‘์ง‘๋„ (High Cohesive) : ๋™์ผํ•œ ๋ชฉ์ (๊ด€์‹ฌ์‚ฌ)๋ฅผ ๊ฐ€์ง„ ์ฝ”๋“œ๋ผ๋ฆฌ ์ž˜ ๋ชจ์—ฌ์žˆ๋‹ค. KISS ์›์น™ Keep It Simple, Stup..

    [Python] ๋ณ€์ˆ˜ Scope (์ „์—ญ ๋ณ€์ˆ˜์™€ ์ง€์—ญ ๋ณ€์ˆ˜) ์— ๋Œ€ํ•œ ์ดํ•ด

    ์˜ˆ์‹œ 1 _list = [1, 2, 3, 4] def sum_all(): sum_val = 0 for elem in _list: sum_val += elem return sum_val total_sum = sum_all() print(total_sum) print(sum_val) 10 NameError: name 'sum_val' is not defined ์ „์—ญ ๋ณ€์ˆ˜๋Š” ๊ตณ์ด ์ธ์ž๋กœ ๋„˜๊ธฐ์ง€ ์•Š์•„๋„ ํ•จ์ˆ˜ ๋‚ด์—์„œ ์ž˜ ์ž‘๋™ํ•œ๋‹ค. ์ฆ‰, ์ „์—ญ ๋ณ€์ˆ˜๋Š” ์–ด๋””์—์„œ๋‚˜ ์“ธ ์ˆ˜ ์žˆ๋‹ค. ์ง€์—ญ ๋ณ€์ˆ˜๋Š” ๋‚ด๋ถ€ Scope๋ฅผ ๋ฒ—์–ด๋‚˜๋ฉด ์ฆ๋ฐœํ•˜์—ฌ ๋” ์ด์ƒ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. ์ฆ‰, ์ง€์—ญ ๋ณ€์ˆ˜๋Š” ์–ด๋””์—์„œ๋‚˜ ์“ธ ์ˆ˜ ์—†๋‹ค. ์˜ˆ์‹œ 2 ์ฝ”๋“œ 1. _list = [1, 2, 3, 4] def modify(): _list[0] = 10 modify() f..

    [ReactJS] Dynamic Routing & Query String

    [ReactJS] Dynamic Routing & Query String

    Dynamic Routing (๋™์  ๋ผ์šฐํŒ…) ์ •์  Routing Routing์„ ์„ค์ •ํ•˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ์‹์€ ์ •์  Routing์ด๋‹ค. ์ •์  ๋ผ์šฐํŒ…์€ Router ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฏธ๋ฆฌ ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉํ•  ๊ฒฝ๋กœ๋“ค๊ณผ ๋ณด์—ฌ์ค„ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋ชจ๋‘ ์ •์˜ํ•ด๋‘๋Š” ๋ฐฉ์‹์ด๋‹ค. import React from 'react'; import { BrowserRouter, Route, Routes } from 'react-router-dom'; const Router = () => { return ( ) } export default Router; ํ•˜์ง€๋งŒ ๋ณต์žกํ•˜๊ณ  ๊ทœ๋ชจ๊ฐ€ ํฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ๊ฒฝ๋กœ๋ฅผ ๋ฏธ๋ฆฌ ์„ค์ •ํ•˜๋Š” Routing ๋ฐฉ์‹๋งŒ์œผ๋ก  ์ฒ˜๋ฆฌํ•˜๊ธฐ ํž˜๋“  ์ž‘์—…์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค. (Route๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์ •์˜ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ) ๋™์  ๋ผ์šฐํŒ… ..

    [ReactJS] Component์˜ ๋ถ„๋ฆฌ์™€ ์žฌ์‚ฌ์šฉ (๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ)

    ์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ๋ž€ ๋ณต์žกํ•œ ์ฝ”๋“œ๋ฅผ ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ์ฝ”๋“œ๋ผ๋ฆฌ ๋ณ„๋„๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ๋ณ„๋œ '๊ฐœ๊ฐœ์˜ ๊ด€์‹ฌ์‚ฌ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ถ€๋ถ„'์œผ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๋””์ž์ธ ์›์น™์ด๋‹ค. ์ปดํฌ๋„ŒํŠธ ๋ณ„๋กœ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ•˜๋ฉด ํ™•์žฅ์„ฑ๊ณผ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ์ด์œ  React์—์„œ ์ปดํฌ๋„ŒํŠธ๋Š” ๋‹ค์–‘ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค. ์–ด๋–ค ์ปดํฌ๋„ŒํŠธ๋Š” UI๋ฅผ ํ‘œํ˜„ํ•˜๊ณ ์ž ํ•˜๊ณ , ๋˜ ์–ด๋–ค ์ปดํฌ๋„ŒํŠธ๋Š” ๋™์ž‘ํ•˜๋Š” ๋กœ์ง์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค. ์œ„์˜ ๋‘ ์—ญํ• ์„ ๋ชจ๋‘ ๋‹ด๋Š” ์ปดํฌ๋„ŒํŠธ ๋˜ํ•œ ์กด์žฌํ•˜๊ณ , ํ•˜๋‚˜๋„ ๋‹ด์ง€ ์•Š๋Š” ์ปดํฌ๋„ŒํŠธ๋„ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ์ปดํฌ๋„ŒํŠธ๋Š” ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ UI ๋‹จ์œ„์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ์›น์˜ ๋ณต์žก๋„์™€ ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์—์„œ ์ˆ˜ํ–‰ํ•˜๋ ค๊ณ  ํ•˜๋Š” ์—ญํ• ์— ๋”ฐ๋ผ ์–ผ๋งˆ๋“ ์ง€ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ '๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ'..

    [ReactJS] ์ƒ์ˆ˜ ๋ฐ์ดํ„ฐ & Mock Data + fetch ๋งค์†Œ๋“œ

    [ReactJS] ์ƒ์ˆ˜ ๋ฐ์ดํ„ฐ & Mock Data + fetch ๋งค์†Œ๋“œ

    ์ƒ์ˆ˜ ๋ฐ์ดํ„ฐ๋ž€? ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ React์—์„œ ๋ฐ์ดํ„ฐ๋Š” UI์ด๋‹ค. ์‹œ๊ฐ„์ด ํ๋ฆ„์— ๋”ฐ๋ผ ๋ณ€ํ•˜๋Š” ๋ณ€์ˆ˜ ๋ฐ์ดํ„ฐ๋กœ UI๋ฅผ ๋งŒ๋“ค ๋• ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€์•ผ ํ•œ๋‹ค. ๋ฐ˜๋ฉด ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์ƒ์ˆ˜ ๋ฐ์ดํ„ฐ๋กœ UI๋ฅผ ๋งŒ๋“ค ๋• ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ฌ ํ•„์š”๊ฐ€ ์—†๋‹ค. ์ƒ์ˆ˜ ๋ฐ์ดํ„ฐ ํ™œ์šฉํ•˜๊ธฐ /* App.js */ import React from "react"; const MENU_LIST = [ { id: 1, menuName: "New Repository" }, { id: 2, menuName: "Import Repository" }, { id: 3, menuName: "New Gist" }, { id: 4, menuName: "New Organization" }, { id: 5, menuName: "New ..

    [ReactJS] Side Effect์™€ useEffect

    Side Effect๋ž€? Side Effect๋ž€ ๋ถ€์ž‘์šฉ์ด๋‹ค. ๋ถ€์ž‘์šฉ === ๋ถ€์ˆ˜ํšจ๊ณผ ๋ถ€์ˆ˜ํšจ๊ณผ : ์ฃผ์š”ํ•œ ํšจ๊ณผ์— ๋”ฐ๋ผ์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ถ€์ˆ˜์ ์ธ ํšจ๊ณผ ๋ถ€์ž‘์šฉ์ด๋ž€ ์šฉ์–ด ์ž์ฒด๋Š” ๋ถ€์ •์ ์ธ ์˜๋ฏธ๋ฅผ ๋‚ดํฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋‹จ์ง€ ๋ถ€์ˆ˜์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ํšจ๊ณผ๋ฅผ ์˜๋ฏธํ•˜๋Š” ๋‹จ์–ด์ด๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ Side Effect (๋ถ€์ž‘์šฉ) ๋ž€? ์ฝ”๋“œ๊ฐ€ ์˜๋„ํ•œ ์ฃผ๋œ ํšจ๊ณผ ์™ธ์— ์ถ”๊ฐ€์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๋ถ€์ˆ˜ ํšจ๊ณผ ํŠนํžˆ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„์ธ ํ•จ์ˆ˜์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์šฉ์–ด ํ•จ์ˆ˜์˜ ๋ณธ์งˆ์ ์ธ ์—ญํ•  (์ฃผ๋œ ํšจ๊ณผ) Input์„ ๋ฐ›์•„์„œ Output์„ ์‚ฐ์ถœํ•˜๋Š” ๊ฒƒ Input => Output ํ•จ์ˆ˜์˜ ๋ถ€์ž‘์šฉ (Side Effect) Input์„ ๋ฐ›์•„์„œ Output์„ ์‚ฐ์ถœํ•˜๋Š” ๊ฒƒ ์™ธ์˜ ๋ชจ๋“  ํ–‰์œ„ ํ•จ์ˆ˜์—์„œ ํ•จ์ˆ˜ ์™ธ๋ถ€์˜ ๊ฐ’์„ ์ฝ์–ด์˜ค๋Š” ํ–‰์œ„ ํ•จ์ˆ˜์—์„œ ํ•จ์ˆ˜ ์™ธ๋ถ€์˜ ๊ฐ’..