์ „์ฒด ๊ธ€ 209

2026-06-25: ๋ฐฉ ๋ชฉ๋ก ์กฐํšŒ ์„ฑ๋Šฅ ์ธก์ •๊ณผ N+1 ์›์ธ ์žฌํ™•์ธ

1. ์˜ค๋Š˜์˜ ๋ฐฐ๊ฒฝ ์ „๋‚ ๊นŒ์ง€ Chat Service์˜ ๋กœ๊น…, ์‚ฌ์šฉ์ž ๊ฒ€์ฆ ์—ฐ๋™, ๋ฐ๋ชจ ํ…Œ์ŠคํŠธ ๋„๊ตฌ ์ •๋ฆฌ๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค.์˜ค๋Š˜์€ MVP ์ดํ›„ ๊ฐœ์„ ์ด ํ•„์š”ํ•œ ์„ฑ๋Šฅ ์ง€์ ์„ ์ˆ˜์น˜๋กœ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฉ ๋ชฉ๋ก ์กฐํšŒ API๋ฅผ JMeter๋กœ ์ธก์ •ํ–ˆ๋‹ค. ๋Œ€์ƒ API๋Š” ๋‹ค์Œ์ด๋‹ค.GET /api/v1/chat/rooms ์ด API๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ฐธ์—ฌ ์ค‘์ธ ์ฑ„ํŒ…๋ฐฉ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ค€๋‹ค.๋ฐฉ๋งˆ๋‹ค ๋งˆ์ง€๋ง‰ ๋ฉ”์‹œ์ง€, ์ฝ์ง€ ์•Š์€ ๋ฉ”์‹œ์ง€ ์ˆ˜, ๋ฐฉ ์ƒํƒœ๊ฐ€ ํ•จ๊ป˜ ๋‚ด๋ ค๊ฐ€๋ฏ€๋กœ ์‹ค์ œ ์„œ๋น„์Šค์—์„œ ์ž์ฃผ ํ˜ธ์ถœ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ API๋‹ค.์ฒ˜์Œ์—๋Š” ๋ฐฉ ๋ชฉ๋ก ์กฐํšŒ๊ฐ€ ์—ฌ๋Ÿฌ ์ง€์ ์—์„œ N+1์ด ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ, ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ํ™•์ธํ•ด๋ณด๋‹ˆ ์‹ค์ œ ์›์ธ์€ ๋” ์ข์•˜๋‹ค.lastMessage ๋ณธ๋ฌธ ์กฐํšŒ๋Š” ์ด๋ฏธ MongoDB batch ์กฐํšŒ๋กœ ์ตœ์ ํ™”๋˜์–ด ์žˆ์—ˆ๊ณ , ์ง„์งœ N+1 ์›์ธ์€ unrea..

2026-06-24: Chat Service ๋กœ๊น…, ์‚ฌ์šฉ์ž ๊ฒ€์ฆ ์—ฐ๋™, ๋ฐ๋ชจ ํ…Œ์ŠคํŠธ ๋„๊ตฌ ์ •๋ฆฌ

1. ์˜ค๋Š˜์˜ ๋ฐฐ๊ฒฝ ์ „๋‚ ๊นŒ์ง€ Gateway ๊ฒฝ์œ  STOMP ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ์™€ ๊ทธ๋ฃน๋ฐฉ ํ‡ด์žฅ ํ›„ ์ˆ˜์‹  ์ฐจ๋‹จ ํ๋ฆ„์„ ํ™•์ธํ–ˆ๋‹ค.์˜ค๋Š˜์€ MVP ํ…Œ์ŠคํŠธ๋ฅผ ๋” ์•ˆ์ •์ ์œผ๋กœ ๋ฐ˜๋ณตํ•˜๊ธฐ ์œ„ํ•ด ์„ธ ๊ฐ€์ง€๋ฅผ ์ •๋ฆฌํ–ˆ๋‹ค.์„œ๋ฒ„ ๋กœ๊ทธ๋งŒ ๋ณด๊ณ ๋„ ์ฑ„ํŒ… ์ฃผ์š” ํ๋ฆ„์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋กœ๊น… ๋ณด๊ฐ•์ฑ„ํŒ…๋ฐฉ ์ƒ์„ฑ ์ „์— user-service ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์šฉ์ž ์กด์žฌ ์—ฌ๋ถ€์™€ ์ฐจ๋‹จ ๊ด€๊ณ„ ๊ฒ€์ฆํŒ€์›์ด ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‰ฝ๊ฒŒ 1:1/๊ทธ๋ฃน๋ฐฉ ์ฑ„ํŒ…์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ๋ชจ HTML ์ •๋ฆฌํŠนํžˆ user-service ๊ฒ€์ฆ ์—ฐ๋™์€ MSA ๊ตฌ์กฐ์—์„œ ์ค‘์š”ํ•œ ์ž‘์—…์ด์—ˆ๋‹ค.chat-service๊ฐ€ user DB๋ฅผ ์ง์ ‘ ๋ณด์ง€ ์•Š๊ณ , user-service๊ฐ€ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž/์ฐจ๋‹จ ๋ฐ์ดํ„ฐ๋ฅผ internal API๋กœ ํ™•์ธํ•˜๋„๋ก ๋งŒ๋“ค์—ˆ๋‹ค. 2. ์˜ค๋Š˜์˜ ๋ชฉํ‘œ๋ชฉํ‘œChat Service ์ฃผ์š” ํ๋ฆ„์— ์ตœ์†Œ ๋กœ..

2026-06-23: Chat Service Port/Adapter ๋ฆฌํŒฉํ† ๋ง๊ณผ STOMP ํ†ตํ•ฉ ๊ฒ€์ฆ

1. ์˜ค๋Š˜์˜ ๋ฐฐ๊ฒฝ ์ „๋‚ ๊นŒ์ง€ presence, ์ฝ์Œ ์ฒ˜๋ฆฌ, STOMP ์—๋Ÿฌ ์ฑ„๋„, ๋ฐฉ ๋‚˜๊ฐ€๊ธฐ ์‹œ์Šคํ…œ ๋ฉ”์‹œ์ง€ ์—ฐ๊ฒฐ์„ ์ง„ํ–‰ํ–ˆ๋‹ค.์˜ค๋Š˜์€ MVP ๋งˆ๊ฐ ์ „ ์‹ค์ œ Gateway ๊ฒฝ์œ  ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ, ๊ทธ ์ „์— Chat Service ๋‚ด๋ถ€ ์˜์กด ๊ตฌ์กฐ๋„ ์ •๋ฆฌํ–ˆ๋‹ค.์ž‘์—…์€ ํฌ๊ฒŒ ์„ธ ํ๋ฆ„์ด์—ˆ๋‹ค.Chat Service Application ๊ณ„์ธต์ด JPA, Redis, MongoDB ๊ตฌํ˜„์ฒด๋ฅผ ์ง์ ‘ ์•Œ์ง€ ์•Š๋„๋ก Port/Adapter ๊ตฌ์กฐ๋กœ ๋ฆฌํŒฉํ† ๋งGateway, user-service, chat-service, Redis, MongoDB, PostgreSQL์„ ํ•จ๊ป˜ ๋„์šด ์ƒํƒœ์—์„œ 1:1 ์ฑ„ํŒ… ํ†ตํ•ฉ ๊ฒ€์ฆ๊ทธ๋ฃน๋ฐฉ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ค‘ ํ™•์ธ๋œ ํ‡ด์žฅ ํ›„ STOMP ์ˆ˜์‹  ๋ฌธ์ œ๋ฅผ ์„œ๋ฒ„ ํ‡ด์žฅ ์‹ ํ˜ธ ๋ฐฉ์‹์œผ๋กœ ๋ณด์™„์˜ค๋Š˜์€ ๊ธฐ๋Šฅ์„ ์ƒˆ๋กœ ๋งŽ์ด ์ถ”๊ฐ€..

2026-06-22: Presence, ๋ฐฉ ๋‚˜๊ฐ€๊ธฐ ์‹œ์Šคํ…œ ๋ฉ”์‹œ์ง€, STOMP ์ฝ์Œ/์—๋Ÿฌ ์ฒ˜๋ฆฌ ์ •๋ฆฌ

1. ์˜ค๋Š˜์˜ ๋ฐฐ๊ฒฝ MVP ๋งˆ๊ฐ์„ ์•ž๋‘๊ณ  Chat Service์˜ ์‹ค์‹œ๊ฐ„ ํ๋ฆ„์„ ๋งž์ถฐ์•ผ ํ–ˆ๋‹ค.์ด์ „ ์ž‘์—…์—์„œ ์ฑ„ํŒ…๋ฐฉ ์ƒ์„ฑ, ์กฐํšŒ, ๋‚˜๊ฐ€๊ธฐ ๊ฐ™์€ REST ๊ธฐ๋ฐ˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ธฐ๋Šฅ์€ ์–ด๋А ์ •๋„ ์ •๋ฆฌ๋˜์—ˆ๊ณ , ์ด์ œ WebSocket/STOMP์™€ Redis ์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด์•ผ ํ–ˆ๋‹ค. ์˜ค๋Š˜ ์ž‘์—…์˜ ํ•ต์‹ฌ์€ ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€์˜€๋‹ค.์‚ฌ์šฉ์ž๊ฐ€ ํ˜„์žฌ ์–ด๋–ค ๋ฐฉ์„ ๋ณด๊ณ  ์žˆ๋Š”์ง€ Redis์— ์ €์žฅํ•˜๋Š” presence ์ฒ˜๋ฆฌ๋ฐฉ ๋‚˜๊ฐ€๊ธฐ ์‹œ SYSTEM_LEAVE ๋ฉ”์‹œ์ง€๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ฐฉ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€ ์—ฐ๊ฒฐSTOMP ์ฝ์Œ ์ฒ˜๋ฆฌ์™€ STOMP ๊ณตํ†ต ์—๋Ÿฌ ์‘๋‹ต ๊ตฌ์กฐ ์ •๋ฆฌ์ถ”๊ฐ€๋กœ, ์ˆ˜๋™ ํ…Œ์ŠคํŠธ ์ค‘ ๊ณตํ†ต ์˜ˆ์™ธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ Chat Service์— ๋“ฑ๋ก๋˜์ง€ ์•Š์•„ REST ์˜ˆ์™ธ๊ฐ€ 500์œผ๋กœ ๋‚ด๋ ค๊ฐ€๋Š” ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๊ณ , ์•Œ๋ฆผ ์ด๋ฒคํŠธ ๋ฐœํ–‰์„ ์œ„ํ•œ 1์ฐจ ํ›„๋ณด ์กฐํšŒ ๊ธฐ๋Šฅ๋„ ๊ตฌํ˜„..

2026-06-19~20: ๊ทธ๋ฃน๋ฐฉ ์ƒ์„ฑ๋ถ€ํ„ฐ ๋ฐฉ ๋‚˜๊ฐ€๊ธฐ·์ฝ์Œ·์•Œ๋ฆผ ์„ค์ •๊นŒ์ง€

1. ์˜ค๋Š˜์˜ ๋ฐฐ๊ฒฝ 6์›” 19์ผ๊ณผ 20์ผ์—๋Š” Chat Service์˜ ์ฑ„ํŒ…๋ฐฉ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ธฐ๋Šฅ์„ ๋„“ํ˜”๋‹ค.19์ผ์—๋Š” ๊ทธ๋ฃน ์ฑ„ํŒ…๋ฐฉ ์ƒ์„ฑ, ๋ฐฉ ์ƒ์„ธ/๋ชฉ๋ก ์กฐํšŒ, ์‹œ๊ฐ„ ํ•„๋“œ ๊ธฐ์ค€, ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๋ฌธ์ œ๋ฅผ ์ •๋ฆฌํ–ˆ๋‹ค.20์ผ์—๋Š” ๋ฉ”์‹œ์ง€ ํŒŒํŠธ์—์„œ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•  ์ฐธ์—ฌ์ž ๊ฒ€์ฆ ๊ณ„์•ฝ๊ณผ ๋งˆ์ง€๋ง‰ ๋ฉ”์‹œ์ง€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ฐฑ์‹  ๊ฒฝ๊ณ„๋ฅผ ๋งŒ๋“ค๊ณ , ๋ฐฉ ๋‚˜๊ฐ€๊ธฐ, ์ฝ์Œ ์ฒ˜๋ฆฌ REST API, ์ฑ„ํŒ…๋ฐฉ ์•Œ๋ฆผ ์„ค์ • API๊นŒ์ง€ ์ด์–ด์„œ ๊ตฌํ˜„ํ–ˆ๋‹ค. ์ดํ‹€ ์ž‘์—…์˜ ๊ณตํ†ต ์ฃผ์ œ๋Š” “์ฑ„ํŒ…๋ฐฉ๊ณผ ์ฐธ์—ฌ์ž ์ƒํƒœ๋ฅผ PostgreSQL ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋กœ ์•ˆ์ •์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ”์ด์—ˆ๋‹ค.๋ฉ”์‹œ์ง€ ์›๋ณธ์€ MongoDB์— ์ €์žฅ๋˜์ง€๋งŒ, ๋ฐฉ ๋ชฉ๋ก ์ •๋ ฌ, ์ฐธ์—ฌ์ž ๊ถŒํ•œ, ๋ฐฉ ๋‚˜๊ฐ€๊ธฐ, ์ฝ์Œ ์œ„์น˜, ์•Œ๋ฆผ ์„ค์ •์€ PostgreSQL์˜ ์ฑ„ํŒ…๋ฐฉ/์ฐธ์—ฌ์ž ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ๊ฐ•ํ•˜๊ฒŒ ์˜์กดํ•œ๋‹ค.๊ทธ๋ž˜์„œ ๋ฉ”์‹œ์ง€ ์ €์žฅ ๊ธฐ๋Šฅ๊ณผ ์‹ค..

2026-06-18: 1:1 ์ฑ„ํŒ…๋ฐฉ ์ƒ์„ฑ API์™€ Flyway, ๊ทธ๋ฆฌ๊ณ  ํŠธ๋žœ์žญ์…˜ ๊ฒฝ๊ณ„

1. ์˜ค๋Š˜์˜ ๋ฐฐ๊ฒฝ ์˜ค๋Š˜์€ Chat Service์—์„œ ๊ฐ€์žฅ ๋จผ์ € ํ•„์š”ํ•œ ํ๋ฆ„์ธ 1:1 ์ฑ„ํŒ…๋ฐฉ ์ƒ์„ฑ ๋˜๋Š” ๊ธฐ์กด ๋ฐฉ ๋ฐ˜ํ™˜ API๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค.๋‹จ์ˆœํžˆ ๋ฐฉ์„ ํ•˜๋‚˜ ๋งŒ๋“œ๋Š” API์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ๊ณ ๋ คํ•  ์ ์ด ๋งŽ์•˜๋‹ค.์ด๋ฏธ ๋‘ ์‚ฌ์šฉ์ž ์‚ฌ์ด์— 1:1 ๋ฐฉ์ด ์žˆ์œผ๋ฉด ์ƒˆ๋กœ ๋งŒ๋“ค๋ฉด ์•ˆ ๋œ๋‹ค.๊ธฐ์กด ๋ฐฉ์ด ACTIVE๋ฉด ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค.๊ธฐ์กด ๋ฐฉ์ด INACTIVE๋ฉด ์ƒˆ ๋ฐฉ์„ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ๋‹ค์‹œ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•œ๋‹ค.๋™์‹œ์— ๊ฐ™์€ 1:1 ๋ฐฉ ์ƒ์„ฑ ์š”์ฒญ์ด ๋“ค์–ด์™€๋„ ์ค‘๋ณต ๋ฐฉ์ด ์ƒ๊ธฐ๋ฉด ์•ˆ ๋œ๋‹ค.PostgreSQL ์Šคํ‚ค๋งˆ๊ฐ€ Entity์™€ ์ •ํ™•ํžˆ ๋งž์•„์•ผ ํ•œ๋‹ค.๊ทธ๋ž˜์„œ ์˜ค๋Š˜ ์ž‘์—…์€ ํฌ๊ฒŒ ๋‘ ์ถ•์ด์—ˆ๋‹ค.PostgreSQL ์ดˆ๊ธฐ ์Šคํ‚ค๋งˆ๋ฅผ Flyway๋กœ ๊ณ ์ •ํ•œ๋‹ค.POST /chat/rooms/direct API๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ๋™์‹œ์„ฑ ์ถฉ๋Œ๊นŒ์ง€ ๋ฐฉ์–ดํ•œ๋‹ค. 2...

2026-06-17: Chat Service ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์„ค๊ณ„์™€ ์ฒซ PR

1. ์˜ค๋Š˜์˜ ๋ฐฐ๊ฒฝ ์ด๋ฒˆ ์ตœ์ข… ํ”„๋กœ์ ํŠธ๋Š” ๊ธฐ๋ก ๊ธฐ๋ฐ˜ ๋งค์นญ SNS ์„œ๋น„์Šค๋‹ค.์‚ฌ์šฉ์ž๊ฐ€ ๋‚จ๊ธด ๊ธฐ๋ก๊ณผ ๋ผ์ดํ”„์Šคํƒ€์ผ ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์œ ์‚ฌํ•œ ์‚ฌ์šฉ์ž๋ฅผ ๋งค์นญํ•œ๋‹ค.๋งค์นญ๋œ ์‚ฌ์šฉ์ž๋“ค์ด ์ฑ„ํŒ…์œผ๋กœ ๋Œ€ํ™”๋ฅผ ์ด์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค.๋‚˜๋Š” ์ด ์ค‘ Chat Service๋ฅผ ๋‹ด๋‹นํ•œ๋‹ค.Chat Service๋Š” ๋‹จ์ˆœํžˆ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ธฐ๋Šฅ๋งŒ ๋‹ด๋‹นํ•˜์ง€ ์•Š๋Š”๋‹ค.์ฑ„ํŒ…๋ฐฉ์ฐธ์—ฌ์ž ์ƒํƒœ์ฝ์Œ ์ฒ˜๋ฆฌํ˜„์žฌ ์ ‘์† ์ƒํƒœ์•Œ๋ฆผ ์ด๋ฒคํŠธ์˜ค๋Š˜์€ Chat Service์˜ ์ฒซ ์ž‘์—…์œผ๋กœ ์ฑ„ํŒ…๋ฐฉ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์žก์•˜๋‹ค. 2. ์˜ค๋Š˜์˜ ๋ชฉํ‘œ์˜ค๋Š˜ ๋ชฉํ‘œ๋Š” ์ฑ„ํŒ…๋ฐฉ ์ƒ์„ฑ API๋ฅผ ๋ฐ”๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ์—ˆ๋‹ค.๋จผ์ € ์ดํ›„ ๊ธฐ๋Šฅ๋“ค์ด ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•  PostgreSQL ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์ž‘๊ฒŒ ๊ณ ์ •ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์˜€๋‹ค.๋ชฉํ‘œChatRoom, ChatRoomParticipant, Dire..

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/Python] 3์ง„๋ฒ• ๋’ค์ง‘๊ธฐ

https://school.programmers.co.kr/learn/courses/30/lessons/68935 ํ”„๋กœ๊ทธ๋ž˜๋จธ์ŠคSW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก์˜ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„programmers.co.kr ๋ฌธ์ œ ์„ค๋ช… ์ œํ•œ์‚ฌํ•ญn์€ 1 ์ด์ƒ 100,000,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ def solution(n): answer = '' # [1๋‹จ๊ณ„] 10์ง„๋ฒ•์„ 3์ง„๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ (๋™์‹œ์— ์•ž๋’ค๋กœ ๋’ค์ง‘๊ธฐ) while n > 0: # 3์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ์–ด ์ฐจ๋ก€๋Œ€๋กœ ์ด์–ด ๋ถ™์ž…๋‹ˆ๋‹ค. # ๊ตฌํ•œ ์ˆœ์„œ๋Œ€๋กœ ๋ถ™์ด๊ธฐ ๋•Œ๋ฌธ์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ '๋’ค์ง‘ํžŒ 3์ง„๋ฒ•'์ด ์™„์„ฑ๋ฉ๋‹ˆ๋‹ค. answer += str(n % ..

Coding-Test 2026.06.11

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/Python] ์ด์ƒํ•œ ๋ฌธ์ž ๋งŒ๋“ค๊ธฐ

https://school.programmers.co.kr/learn/courses/30/lessons/12930 ๋ฌธ์ œ ์„ค๋ช… ์ œํ•œ์‚ฌํ•ญ ์ฝ”๋“œ def solution(s): answer = "" # ๋‹จ์–ด ๋‚ด ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜ idx = 0 for ch in s: # ๊ณต๋ฐฑ์„ ๋งŒ๋‚˜๋ฉด ๋‹จ์–ด๊ฐ€ ๋ฐ”๋€Œ๋ฏ€๋กœ ์ธ๋ฑ์Šค ์ดˆ๊ธฐํ™” if ch == " ": answer += ch idx = 0 else: # ์ง์ˆ˜ ์ธ๋ฑ์Šค → ๋Œ€๋ฌธ์ž if idx % 2 == 0: answer += ch.upper() # ํ™€์ˆ˜ ์ธ๋ฑ์Šค → ์†Œ๋ฌธ์ž ..

Coding-Test 2026.06.10

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/Python] ์‚ผ์ด์‚ฌ

https://school.programmers.co.kr/learn/courses/30/lessons/131705 ํ”„๋กœ๊ทธ๋ž˜๋จธ์ŠคSW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก์˜ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„programmers.co.kr ๋ฌธ์ œ ์„ค๋ช… ์ œํ•œ์‚ฌํ•ญ ์ฝ”๋“œ from itertools import combinationsdef solution(number): answer = 0 # 1. number ๋ฐฐ์—ด์—์„œ 3๋ช…์”ฉ ์ง์ง€์€ ๋ชจ๋“  ์กฐํ•ฉ(comb)์„ ํ•˜๋‚˜์”ฉ ๊บผ๋ƒ…๋‹ˆ๋‹ค. for comb in combinations(number, 3): # 2. ๋ฝ‘์€ 3๋ช…์˜ ๋ฒˆํ˜ธ๋ฅผ ๋ชจ๋‘ ๋”ํ–ˆ์„ ๋•Œ 0์ด ๋งž๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. if sum(comb) =..

Coding-Test 2026.06.09