λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

TIL (Today I Learned)/Algorithm

(12)
[λ°±μ€€] 1439번 λ’€μ§‘κΈ° Java 1439번 λ’€μ§‘κΈ° 문제 μ„€λͺ… ν˜„μž¬κΈ€μžμ™€ λ‹€μŒκΈ€μžλ₯Ό 계속 λΉ„κ΅ν•œλ‹€. λ‹€λ₯΄λ©΄ 0κ³Ό 1의 μ˜μ—­λ³„ 갯수λ₯Ό count 0κ³Ό 1의 μ˜μ—­ 쀑 μž‘μ€ 값이 정닡이 λœλ‹€. μ†ŒμŠ€μ½”λ“œ
[λ°±μ€€] 1715번 μΉ΄λ“œμ •λ ¬ν•˜κΈ° Java 1715번 μΉ΄λ“œμ •λ ¬ν•˜κΈ° 문제 μ •λ ¬λœ 두 묢음의 숫자 μΉ΄λ“œκ°€ μžˆλ‹€κ³  ν•˜μž. 각 묢음의 μΉ΄λ“œμ˜ 수λ₯Ό A, B라 ν•˜λ©΄ 보톡 두 λ¬ΆμŒμ„ ν•©μ³μ„œ ν•˜λ‚˜λ‘œ λ§Œλ“œλŠ” λ°μ—λŠ” A+B 번의 비ꡐλ₯Ό ν•΄μ•Ό ν•œλ‹€. 이λ₯Όν…Œλ©΄, 20μž₯의 숫자 μΉ΄λ“œ 묢음과 30μž₯의 숫자 μΉ΄λ“œ λ¬ΆμŒμ„ ν•©μΉ˜λ €λ©΄ 50번의 비ꡐ가 ν•„μš”ν•˜λ‹€. 맀우 λ§Žμ€ 숫자 μΉ΄λ“œ 묢음이 책상 μœ„μ— 놓여 μžˆλ‹€. 이듀을 두 λ¬ΆμŒμ”© 골라 μ„œλ‘œ ν•©μ³λ‚˜κ°„λ‹€λ©΄, κ³ λ₯΄λŠ” μˆœμ„œμ— λ”°λΌμ„œ 비ꡐ νšŸμˆ˜κ°€ 맀우 달라진닀. 예λ₯Ό λ“€μ–΄ 10μž₯, 20μž₯, 40μž₯의 묢음이 μžˆλ‹€λ©΄ 10μž₯κ³Ό 20μž₯을 ν•©μΉœ λ’€, ν•©μΉœ 30μž₯ 묢음과 40μž₯을 ν•©μΉœλ‹€λ©΄ (10 + 20) + (30 + 40) = 100번의 비ꡐ가 ν•„μš”ν•˜λ‹€. κ·ΈλŸ¬λ‚˜ 10μž₯κ³Ό 40μž₯을 ν•©μΉœ λ’€, ν•©μΉœ 50μž₯ 묢음과 20μž₯을 ν•©μΉœλ‹€λ©΄ (10 + 40..
[λ°±μ€€] 1946번 Java 1946번 μ‹ μž…μ‚¬μ› 문제 μ–Έμ œλ‚˜ μ΅œκ³ λ§Œμ„ μ§€ν–₯ν•˜λŠ” κ΅΄μ§€μ˜ λŒ€κΈ°μ—… μ§„μ˜ μ£Όμ‹νšŒμ‚¬κ°€ μ‹ κ·œ 사원 μ±„μš©μ„ μ‹€μ‹œν•œλ‹€. 인재 μ„ λ°œ μ‹œν—˜μ€ 1μ°¨ μ„œλ₯˜μ‹¬μ‚¬μ™€ 2μ°¨ λ©΄μ ‘μ‹œν—˜μœΌλ‘œ 이루어진닀. μ΅œκ³ λ§Œμ„ μ§€ν–₯ν•œλ‹€λŠ” κΈ°μ—…μ˜ 이념에 따라 그듀은 졜고의 μΈμž¬λ“€λ§Œμ„ μ‚¬μ›μœΌλ‘œ μ„ λ°œν•˜κ³  μ‹Άμ–΄ ν•œλ‹€. κ·Έλž˜μ„œ μ§„μ˜ μ£Όμ‹νšŒμ‚¬λŠ”, λ‹€λ₯Έ λͺ¨λ“  μ§€μ›μžμ™€ λΉ„κ΅ν–ˆμ„ λ•Œ μ„œλ₯˜μ‹¬μ‚¬ 성적과 λ©΄μ ‘μ‹œν—˜ 성적 쀑 적어도 ν•˜λ‚˜κ°€ λ‹€λ₯Έ μ§€μ›μžλ³΄λ‹€ λ–¨μ–΄μ§€μ§€ μ•ŠλŠ” 자만 μ„ λ°œν•œλ‹€λŠ” 원칙을 μ„Έμ› λ‹€. 즉, μ–΄λ–€ μ§€μ›μž A의 성적이 λ‹€λ₯Έ μ–΄λ–€ μ§€μ›μž B의 성적에 λΉ„ν•΄ μ„œλ₯˜ 심사 결과와 λ©΄μ ‘ 성적이 λͺ¨λ‘ λ–¨μ–΄μ§„λ‹€λ©΄ AλŠ” κ²°μ½” μ„ λ°œλ˜μ§€ μ•ŠλŠ”λ‹€. μ΄λŸ¬ν•œ 쑰건을 λ§Œμ‘±μ‹œν‚€λ©΄μ„œ, μ§„μ˜ μ£Όμ‹νšŒμ‚¬κ°€ 이번 μ‹ κ·œ 사원 μ±„μš©μ—μ„œ μ„ λ°œν•  수 μžˆλŠ” μ‹ μž…μ‚¬μ›μ˜ μ΅œλŒ€ μΈμ›μˆ˜λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜..
[λ°±μ€€] 10819 차이λ₯Ό μ΅œλŒ€λ‘œ 10819번 차이λ₯Ό μ΅œλŒ€λ‘œ 문제 N개의 μ •μˆ˜λ‘œ 이루어진 λ°°μ—΄ Aκ°€ μ£Όμ–΄μ§„λ‹€. μ΄λ•Œ, 배열에 λ“€μ–΄μžˆλŠ” μ •μˆ˜μ˜ μˆœμ„œλ₯Ό 적절히 λ°”κΏ”μ„œ λ‹€μŒ μ‹μ˜ μ΅œλŒ“κ°’μ„ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. |A[0] - A[1]| + |A[1] - A[2]| + ... + |A[N-2] - A[N-1]| μž…λ ₯ 첫째 쀄에 N (3 ≤ N ≤ 8)이 μ£Όμ–΄μ§„λ‹€. λ‘˜μ§Έ μ€„μ—λŠ” λ°°μ—΄ A에 λ“€μ–΄μžˆλŠ” μ •μˆ˜κ°€ μ£Όμ–΄μ§„λ‹€. 배열에 λ“€μ–΄μžˆλŠ” μ •μˆ˜λŠ” -100보닀 ν¬κ±°λ‚˜ κ°™κ³ , 100보닀 μž‘κ±°λ‚˜ κ°™λ‹€. 6 20 1 15 8 4 10좜λ ₯ 첫째 쀄에 배열에 λ“€μ–΄μžˆλŠ” 수의 μˆœμ„œλ₯Ό 적절히 λ°”κΏ”μ„œ 얻을 수 μžˆλŠ” μ‹μ˜ μ΅œλŒ“κ°’μ„ 좜λ ₯ν•œλ‹€. 62μ„€λͺ… μž…λ ₯받은 배열을 μ •λ ¬λœ ν˜•νƒœλ‘œ 풀이λ₯Ό μ§„ν–‰ λ°±νŠΈλž˜ν‚Ήμ„ μ΄μš©ν•΄μ„œ 차이가 μ΅œλŒ€κ°€ λ˜λŠ” 쑰합을 κ΅¬ν•œλ‹€. μ†ŒμŠ€μ½”λ“œ
[λ°±μ€€] 1929번 μ†Œμˆ˜κ΅¬ν•˜κΈ° JAVA 1929번 μ†Œμˆ˜κ΅¬ν•˜κΈ° 문제 M이상 Nμ΄ν•˜μ˜ μ†Œμˆ˜λ₯Ό λͺ¨λ‘ 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μž…λ ₯ 첫째 쀄에 μžμ—°μˆ˜ Mκ³Ό N이 빈 칸을 사이에 두고 μ£Όμ–΄μ§„λ‹€. (1 ≤ M ≤ N ≤ 1,000,000) M이상 Nμ΄ν•˜μ˜ μ†Œμˆ˜κ°€ ν•˜λ‚˜ 이상 μžˆλŠ” μž…λ ₯만 μ£Όμ–΄μ§„λ‹€. 3 16 좜λ ₯ 3 5 7 11 13 μ„€λͺ… μ†Œμˆ˜λ₯Ό κ΅¬ν•˜λŠ” 방법 쀑 μ—λΌν† μŠ€ν…Œλ„€μŠ€ 체λ₯Ό μ‚¬μš© μ•Œκ³ λ¦¬μ¦˜ μ‹œκ°„ λ³΅μž‘λ„ : O(NlogNlogN) μ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ μ²΄λŠ” λ‹€μˆ˜μ˜ μ†Œμˆ˜λ₯Ό 찾을 λ•Œ 효과적 각 μžμ—°μˆ˜μ— λŒ€ν•œ μ†Œμˆ˜ μ—¬λΆ€λ₯Ό μ €μž₯ν•΄μ•Ό ν•˜λ―€λ‘œ λ©”λͺ¨λ¦¬κ°€ 많이 ν•„μš”ν•˜λ‹€. μ†ŒμŠ€μ½”λ“œ
[λ°±μ€€] 2644 촌수 계산 2644번 μ΄Œμˆ˜κ³„μ‚° 문제 우리 λ‚˜λΌλŠ” κ°€μ‘± ν˜Ήμ€ μΉœμ²™λ“€ μ‚¬μ΄μ˜ 관계λ₯Ό μ΄Œμˆ˜λΌλŠ” λ‹¨μœ„λ‘œ ν‘œν˜„ν•˜λŠ” λ…νŠΉν•œ λ¬Έν™”λ₯Ό κ°€μ§€κ³  μžˆλ‹€. μ΄λŸ¬ν•œ μ΄Œμˆ˜λŠ” λ‹€μŒκ³Ό 같은 λ°©μ‹μœΌλ‘œ κ³„μ‚°λœλ‹€. 기본적으둜 λΆ€λͺ¨μ™€ μžμ‹ 사이λ₯Ό 1촌으둜 μ •μ˜ν•˜κ³  μ΄λ‘œλΆ€ν„° μ‚¬λžŒλ“€ κ°„μ˜ 촌수λ₯Ό κ³„μ‚°ν•œλ‹€. 예λ₯Ό λ“€λ©΄ λ‚˜μ™€ 아버지, 아버지와 ν• μ•„λ²„μ§€λŠ” 각각 1촌으둜 λ‚˜μ™€ ν• μ•„λ²„μ§€λŠ” 2촌이 되고, 아버지 ν˜•μ œλ“€κ³Ό ν• μ•„λ²„μ§€λŠ” 1촌, λ‚˜μ™€ 아버지 ν˜•μ œλ“€κ³ΌλŠ” 3촌이 λœλ‹€. μ—¬λŸ¬ μ‚¬λžŒλ“€μ— λŒ€ν•œ λΆ€λͺ¨ μžμ‹λ“€ κ°„μ˜ 관계가 μ£Όμ–΄μ‘Œμ„ λ•Œ, μ£Όμ–΄μ§„ 두 μ‚¬λžŒμ˜ 촌수λ₯Ό κ³„μ‚°ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μž…λ ₯ μ‚¬λžŒλ“€μ€ 1, 2, 3, …, n (1 ≤ n ≤ 100)의 μ—°μ†λœ 번호둜 각각 ν‘œμ‹œλœλ‹€. μž…λ ₯ 파일의 첫째 μ€„μ—λŠ” 전체 μ‚¬λžŒμ˜ 수 n이 μ£Όμ–΄μ§€κ³ , λ‘˜μ§Έ μ€„μ—λŠ” 촌수λ₯Ό 계산..
[λ°±μ€€] 11057 였λ₯΄λ§‰ 수 11057번 였λ₯΄λ§‰ 수 문제 였λ₯΄λ§‰ μˆ˜λŠ” 수의 μžλ¦¬κ°€ μ˜€λ¦„μ°¨μˆœμ„ μ΄λ£¨λŠ” 수λ₯Ό λ§ν•œλ‹€. μ΄λ•Œ, μΈμ ‘ν•œ μˆ˜κ°€ 같아도 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μΉœλ‹€. 예λ₯Ό λ“€μ–΄, 2234와 3678, 11119λŠ” 였λ₯΄λ§‰ μˆ˜μ΄μ§€λ§Œ, 2232, 3676, 91111은 였λ₯΄λ§‰ μˆ˜κ°€ μ•„λ‹ˆλ‹€. 수의 길이 N이 μ£Όμ–΄μ‘Œμ„ λ•Œ, 였λ₯΄λ§‰ 수의 개수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μˆ˜λŠ” 0으둜 μ‹œμž‘ν•  수 μžˆλ‹€. μž…λ ₯ 첫째 쀄에 N (1 ≤ N ≤ 1,000)이 μ£Όμ–΄μ§„λ‹€. 1좜λ ₯ 첫째 쀄에 길이가 N인 였λ₯΄λ§‰ 수의 개수λ₯Ό 10,007둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€λ₯Ό 좜λ ₯ν•œλ‹€. 10μ„€λͺ… 1의 μžλ¦¬μˆ˜λŠ” μ „λΆ€ ν•΄λ‹Ή 1, 2, 3, 4, ... 9 2의 μžλ¦¬μˆ˜λŠ” 11, 12, 13, 14 ... 19 3의 μžλ¦¬μˆ˜λŠ” 111, 112, 113, 114 ... 4의 μžλ¦¬μˆ˜λŠ” 1111,..
[λ°±μ€€] 1107 리λͺ¨μ»¨ 1107번 리λͺ¨μ»¨ 문제 μˆ˜λΉˆμ΄λŠ” TVλ₯Ό 보고 μžˆλ‹€. μˆ˜λΉˆμ΄λŠ” 채널을 돌리렀고 ν–ˆμ§€λ§Œ, λ²„νŠΌμ„ λ„ˆλ¬΄ μ„Έκ²Œ λˆ„λ₯΄λŠ” λ°”λžŒμ—, 일뢀 숫자 λ²„νŠΌμ΄ κ³ μž₯났닀. 리λͺ¨μ»¨μ—λŠ” λ²„νŠΌμ΄ 0λΆ€ν„° 9κΉŒμ§€ 숫자, +와 -κ°€ μžˆλ‹€. +λ₯Ό λˆ„λ₯΄λ©΄ ν˜„μž¬ λ³΄κ³ μžˆλŠ” μ±„λ„μ—μ„œ +1된 μ±„λ„λ‘œ μ΄λ™ν•˜κ³ , -λ₯Ό λˆ„λ₯΄λ©΄ -1된 μ±„λ„λ‘œ μ΄λ™ν•œλ‹€. 채널 0μ—μ„œ -λ₯Ό λˆ„λ₯Έ κ²½μš°μ—λŠ” 채널이 λ³€ν•˜μ§€ μ•Šκ³ , 채널은 λ¬΄ν•œλŒ€ 만큼 μžˆλ‹€. μˆ˜λΉˆμ΄κ°€ μ§€κΈˆ μ΄λ™ν•˜λ €κ³  ν•˜λŠ” 채널은 N이닀. μ–΄λ–€ λ²„νŠΌμ΄ κ³ μž₯λ‚¬λŠ”μ§€ μ£Όμ–΄μ‘Œμ„ λ•Œ, 채널 N으둜 μ΄λ™ν•˜κΈ° μœ„ν•΄μ„œ λ²„νŠΌμ„ μ΅œμ†Œ λͺ‡ 번 λˆŒλŸ¬μ•Όν•˜λŠ”μ§€ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μˆ˜λΉˆμ΄κ°€ μ§€κΈˆ 보고 μžˆλŠ” 채널은 100λ²ˆμ΄λ‹€. μž…λ ₯ 첫째 쀄에 μˆ˜λΉˆμ΄κ°€ μ΄λ™ν•˜λ €κ³  ν•˜λŠ” 채널 N (0 ≤ N ≤ 500,000)이 μ£Όμ–΄μ§„λ‹€. λ‘˜μ§Έ μ€„μ—λŠ”..