c++ 33

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ / C++] μ‘°μ΄μŠ€ν‹±

문제링크: programmers.co.kr/learn/courses/30/lessons/42860 μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - μ‘°μ΄μŠ€ν‹± μ‘°μ΄μŠ€ν‹±μœΌλ‘œ μ•ŒνŒŒλ²³ 이름을 μ™„μ„±ν•˜μ„Έμš”. 맨 μ²˜μŒμ—” A둜만 이루어져 μžˆμŠ΅λ‹ˆλ‹€. ex) μ™„μ„±ν•΄μ•Ό ν•˜λŠ” 이름이 μ„Έ κΈ€μžλ©΄ AAA, λ„€ κΈ€μžλ©΄ AAAA μ‘°μ΄μŠ€ν‹±μ„ 각 λ°©ν–₯으둜 움직이면 μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€. β–² - λ‹€ programmers.co.kr 풀이 μ‘°μ΄μŠ€ν‹±μ„ μœ„μ•„λž˜λ‘œ μ›€μ§μ΄λŠ” νšŸμˆ˜μ™€ 쒌우둜 μ›€μ§μ΄λŠ” 횟수λ₯Ό λ”°λ‘œ μƒκ°ν–ˆλ‹€. μœ„μ•„λž˜λ‘œ μ›€μ§μ΄λŠ” 것은 μ•ŒνŒŒλ²³μ—μ„œ Aκ°€ κ°€κΉŒμš΄μ§€ Zκ°€ κ°€κΉŒμš΄μ§€μ— 따라 μ΅œμ†Œ 횟수λ₯Ό κ΅¬ν–ˆλ‹€. 쒌우둜 μ›€μ§μ΄λŠ” 것은 μ™Όμͺ½κ³Ό 였λ₯Έμͺ½ 쀑 μ–΄λŠ μͺ½μœΌλ‘œ κ°€μ•Ό μ΅œμ†Œκ°€ λ˜λŠ”μ§€λ₯Ό κ΅¬ν•΄μ„œ ν•΄κ²°ν–ˆλ‹€. 쒌우 이동 횟수(move)의 μ΄ˆκΉƒκ°’μ€ μ΅œλŒ€ 이동 횟수인 len - 1이닀. 이후 i ..

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ / C++] 체윑볡

문제링크: programmers.co.kr/learn/courses/30/lessons/42862 μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - 체윑볡 μ μ‹¬μ‹œκ°„μ— 도둑이 λ“€μ–΄, 일뢀 학생이 μ²΄μœ‘λ³΅μ„ λ„λ‚œλ‹Ήν–ˆμŠ΅λ‹ˆλ‹€. λ‹€ν–‰νžˆ μ—¬λ²Œ 체윑볡이 μžˆλŠ” 학생이 μ΄λ“€μ—κ²Œ μ²΄μœ‘λ³΅μ„ 빌렀주렀 ν•©λ‹ˆλ‹€. ν•™μƒλ“€μ˜ λ²ˆν˜ΈλŠ” 체격 순으둜 맀겨져 μžˆμ–΄, λ°”λ‘œ μ•žλ²ˆ programmers.co.kr 풀이 학생이 가지고 μžˆλŠ” 체윑볡의 수λ₯Ό μ €μž₯ν•˜λŠ” λ°°μ—΄ studentλ₯Ό λ§Œλ“€κ³ , μ²΄μœ‘λ³΅μ„ μžƒμ–΄λ²„λ¦° 학생은 -1, μ—¬λΆ„μ˜ 체윑볡이 μžˆλŠ” 학생은 1을 λ”ν•΄μ€λ‹ˆλ‹€. 1λ²ˆλΆ€ν„° n번 학생 μ€‘μ—μ„œ 체윑볡이 μ—†λŠ” ν•™μƒμ˜ 경우 λ¨Όμ € λ°”λ‘œ μ•žμ— 학생(student[i - 1])μ—κ²Œ μ²΄μœ‘λ³΅μ„ 빌릴 수 μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. μ²΄μœ‘λ³΅μ„ 빌릴 수 μ—†λ‹€λ©΄ 뒀에 학생(student[i + 1])μ—κ²Œ..

[λ°±μ€€ BOJ / C++] 1541번: μžƒμ–΄λ²„λ¦° κ΄„ν˜Έ

문제링크: www.acmicpc.net/problem/1541 1541번: μžƒμ–΄λ²„λ¦° κ΄„ν˜Έ 첫째 쀄에 식이 주어진닀. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으둜 이루어져 있고, κ°€μž₯ 처음과 λ§ˆμ§€λ§‰ λ¬ΈμžλŠ” μˆ«μžμ΄λ‹€. 그리고 μ—°μ†ν•΄μ„œ 두 개 μ΄μƒμ˜ μ—°μ‚°μžκ°€ λ‚˜νƒ€λ‚˜μ§€ μ•Šκ³ , 5μžλ¦¬λ³΄λ‹€ www.acmicpc.net 풀이 식을 λ§ˆμ΄λ„ˆμŠ€ μ—°μ‚°μžκ°€ λ‚˜μ˜€κΈ° μ „κ³Ό ν›„λ‘œ λ‚˜λˆ μ„œ 생각할 수 μžˆλ‹€. ν•œ 번 λ§ˆμ΄λ„ˆμŠ€ μ—°μ‚°μžκ°€ λ‚˜μ˜¨ ν›„μ—λŠ” 뒀에 λ‚˜μ˜€λŠ” μˆ«μžλ“€μ€ λͺ¨λ‘ λ§ˆμ΄λ„ˆμŠ€λ‘œ 계산할 수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄ 1+1+1-1+1-1+1κ³Ό 같은 식이 μžˆμ„ λ•Œ μ΅œμ†Ÿκ°’μ„ 가지도둝 κ΄„ν˜Έλ₯Ό 치면 1+1+1-(1+1)-(1+1)이 λœλ‹€. ν•œ 번 -κ°€ λ‚˜μ˜€λ©΄ 뒀에 λ‚˜μ˜€λŠ” +λŠ” μ•žμ˜ μ—°μ‚°κ³Ό κ΄„ν˜Έλ‘œ ν•©μ³μ„œ λΊ„μ…ˆμ„ ν•΄μ£ΌλŠ” 것이닀. λ”°λΌμ„œ bool ..

[λ°±μ€€ BOJ / C++] 1138번: ν•œ μ€„λ‘œ μ„œκΈ°

문제링크: www.acmicpc.net/problem/1138 1138번: ν•œ μ€„λ‘œ μ„œκΈ° 첫째 쀄에 μ‚¬λžŒμ˜ 수 N이 주어진닀. N은 10보닀 μž‘κ±°λ‚˜ 같은 μžμ—°μˆ˜μ΄λ‹€. λ‘˜μ§Έ μ€„μ—λŠ” ν‚€κ°€ 1인 μ‚¬λžŒλΆ€ν„° μ°¨λ‘€λŒ€λ‘œ μžκΈ°λ³΄λ‹€ ν‚€κ°€ 큰 μ‚¬λžŒμ΄ μ™Όμͺ½μ— λͺ‡ λͺ…이 μžˆμ—ˆλŠ”μ§€ 주어진닀. i번째 μˆ˜λŠ” 0보닀 www.acmicpc.net 풀이 ν‚€κ°€ μž‘μ€ μ‚¬λžŒλΆ€ν„° λͺ‡ 번째 μžλ¦¬μ— μ„œλ©΄ λ˜λŠ”μ§€ μ •ν–ˆλ‹€. μ •λ‹΅ 배열을 0으둜 μ΄ˆκΈ°ν™”ν•œ λ‹€μŒ, μžκΈ°λ³΄λ‹€ 큰 μ‚¬λžŒμ΄ μ™Όμͺ½μ— 2λͺ… μžˆλ‹€λ©΄ 3번째 μžλ¦¬μ— μ„œλŠ” λ°©μ‹μœΌλ‘œ 문제λ₯Ό ν•΄κ²°ν–ˆλ‹€. μž‘μ€ ν‚€ μˆœμ„œλŒ€λ‘œ ν™•μΈν•˜κΈ° λ•Œλ¬Έμ— 이미 μ •λ‹΅ 배열에 λ“€μ–΄κ°„ μ‚¬λžŒ(쀄을 μ„  μ‚¬λžŒ)은 λͺ¨λ‘ μžμ‹ λ³΄λ‹€ ν‚€κ°€ μž‘λ‹€κ³  생각할 수 μžˆλ‹€. 예제 μž…λ ₯처럼 [2, 1, 1, 0]이 μž…λ ₯으둜 μ£Όμ–΄μ‘Œμ„ λ•Œ answer은 λ‹€μŒ μˆœμ„œ..

[λ°±μ€€ BOJ / C++] 2217번: λ‘œν”„

문제 N(1 ≤ N ≤ 100,000)개의 λ‘œν”„κ°€ μžˆλ‹€. 이 λ‘œν”„λ₯Ό μ΄μš©ν•˜μ—¬ μ΄λŸ°μ €λŸ° 물체λ₯Ό λ“€μ–΄ 올릴 수 μžˆλ‹€. 각각의 λ‘œν”„λŠ” κ·Έ κ΅΅κΈ°λ‚˜ 길이가 λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— λ“€ 수 μžˆλŠ” 물체의 μ€‘λŸ‰μ΄ μ„œλ‘œ λ‹€λ₯Ό μˆ˜λ„ μžˆλ‹€. ν•˜μ§€λ§Œ μ—¬λŸ¬ 개의 λ‘œν”„λ₯Ό λ³‘λ ¬λ‘œ μ—°κ²°ν•˜λ©΄ 각각의 λ‘œν”„μ— κ±Έλ¦¬λŠ” μ€‘λŸ‰μ„ λ‚˜λˆŒ 수 μžˆλ‹€. k개의 λ‘œν”„λ₯Ό μ‚¬μš©ν•˜μ—¬ μ€‘λŸ‰μ΄ w인 물체λ₯Ό λ“€μ–΄ 올릴 λ•Œ, 각각의 λ‘œν”„μ—λŠ” λͺ¨λ‘ κ³ λ₯΄κ²Œ w/k 만큼의 μ€‘λŸ‰μ΄ 걸리게 λœλ‹€. 각 λ‘œν”„λ“€μ— λŒ€ν•œ 정보가 μ£Όμ–΄μ‘Œμ„ λ•Œ, 이 λ‘œν”„λ“€μ„ μ΄μš©ν•˜μ—¬ λ“€μ–΄μ˜¬λ¦΄ 수 μžˆλŠ” 물체의 μ΅œλŒ€ μ€‘λŸ‰μ„ κ΅¬ν•΄λ‚΄λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. λͺ¨λ“  λ‘œν”„λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•  ν•„μš”λŠ” μ—†μœΌλ©°, μž„μ˜λ‘œ λͺ‡ 개의 λ‘œν”„λ₯Ό κ³¨λΌμ„œ μ‚¬μš©ν•΄λ„ λœλ‹€. 첫째 쀄에 μ •μˆ˜ N이 주어진닀. λ‹€μŒ N개의 μ€„μ—λŠ” 각 λ‘œν”„κ°€ 버틸 수 있..

[λ°±μ€€ BOJ / C++] 11399번: ATM

문제 μΈν•˜μ€ν–‰μ—λŠ” ATM이 1λŒ€λ°–μ— μ—†λ‹€. μ§€κΈˆ 이 ATM μ•žμ— Nλͺ…μ˜ μ‚¬λžŒλ“€μ΄ 쀄을 μ„œμžˆλ‹€. μ‚¬λžŒμ€ 1λ²ˆλΆ€ν„° Nλ²ˆκΉŒμ§€ λ²ˆν˜Έκ°€ 맀겨져 있으며, i번 μ‚¬λžŒμ΄ λˆμ„ μΈμΆœν•˜λŠ”λ° κ±Έλ¦¬λŠ” μ‹œκ°„μ€ Pi뢄이닀. μ‚¬λžŒλ“€μ΄ 쀄을 μ„œλŠ” μˆœμ„œμ— λ”°λΌμ„œ, λˆμ„ μΈμΆœν•˜λŠ”λ° ν•„μš”ν•œ μ‹œκ°„μ˜ 합이 λ‹¬λΌμ§€κ²Œ λœλ‹€. 예λ₯Ό λ“€μ–΄, 총 5λͺ…이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우λ₯Ό μƒκ°ν•΄λ³΄μž. [1, 2, 3, 4, 5] μˆœμ„œλ‘œ 쀄을 μ„ λ‹€λ©΄, 1번 μ‚¬λžŒμ€ 3λΆ„ λ§Œμ— λˆμ„ 뽑을 수 μžˆλ‹€. 2번 μ‚¬λžŒμ€ 1번 μ‚¬λžŒμ΄ λˆμ„ 뽑을 λ•ŒκΉŒμ§€ κΈ°λ‹€λ €μ•Ό ν•˜κΈ° λ•Œλ¬Έμ—, 3+1 = 4뢄이 걸리게 λœλ‹€. 3번 μ‚¬λžŒμ€ 1번, 2번 μ‚¬λžŒμ΄ λˆμ„ 뽑을 λ•ŒκΉŒμ§€ κΈ°λ‹€λ €μ•Ό ν•˜κΈ° λ•Œλ¬Έμ—, 총 3+1+4 = 8뢄이 ν•„μš”ν•˜κ²Œ 된..

[λ°±μ€€ BOJ / C++] 11047번: 동전 0

문제 μ€€κ·œκ°€ 가지고 μžˆλŠ” 동전은 총 Nμ’…λ₯˜μ΄κ³ , 각각의 동전을 맀우 많이 가지고 μžˆλ‹€. 동전을 적절히 μ‚¬μš©ν•΄μ„œ κ·Έ κ°€μΉ˜μ˜ 합을 K둜 λ§Œλ“€λ €κ³  ν•œλ‹€. μ΄λ•Œ ν•„μš”ν•œ 동전 개수의 μ΅œμ†Ÿκ°’μ„ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. 첫째 쀄에 Nκ³Ό Kκ°€ 주어진닀. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) λ‘˜μ§Έ 쀄뢀터 N개의 쀄에 λ™μ „μ˜ κ°€μΉ˜ Aiκ°€ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ 주어진닀. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 κ²½μš°μ— AiλŠ” Ai-1의 배수) 첫째 쀄에 K원을 λ§Œλ“œλŠ”λ° ν•„μš”ν•œ 동전 개수의 μ΅œμ†Ÿκ°’μ„ 좜λ ₯ν•œλ‹€. www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 쀄에 Nκ³Ό Kκ°€ 주어진닀. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) λ‘˜μ§Έ ..

[λ°±μ€€ BOJ / C++] 5585번: κ±°μŠ€λ¦„λˆ 풀이

문제 νƒ€λ‘œλŠ” 자주 JOIμž‘ν™”μ μ—μ„œ 물건을 μ‚°λ‹€. JOIμž‘ν™”μ μ—λŠ” μž”λˆμœΌλ‘œ 500μ—”, 100μ—”, 50μ—”, 10μ—”, 5μ—”, 1엔이 μΆ©λΆ„νžˆ 있고, μ–Έμ œλ‚˜ κ±°μŠ€λ¦„λˆ κ°œμˆ˜κ°€ κ°€μž₯ 적게 μž”λˆμ„ μ€€λ‹€. νƒ€λ‘œκ°€ JOIμž‘ν™”μ μ—μ„œ 물건을 사고 μΉ΄μš΄ν„°μ—μ„œ 1000μ—” 지폐λ₯Ό ν•œ μž₯ λƒˆμ„ λ•Œ, 받을 μž”λˆμ— ν¬ν•¨λœ μž”λˆμ˜ 개수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. 예λ₯Ό λ“€μ–΄ μž…λ ₯된 예 1의 κ²½μš°μ—λŠ” μ•„λž˜ κ·Έλ¦Όμ—μ„œ 처럼 4개λ₯Ό 좜λ ₯ν•΄μ•Ό ν•œλ‹€. μž…λ ₯은 ν•œμ€„λ‘œ 이루어져 있고, νƒ€λ‘œκ°€ μ§€λΆˆν•  돈(1 이상 1000 미만의 μ •μˆ˜) 1κ°œκ°€ μ“°μ—¬μžˆλ‹€. μ œμΆœν•  좜λ ₯ νŒŒμΌμ€ 1ν–‰μœΌλ‘œλ§Œ λ˜μ–΄ μžˆλ‹€. μž”λˆμ— ν¬ν•¨λœ 맀수λ₯Ό 좜λ ₯ν•˜μ‹œμ˜€. www.acmicpc.net/problem/5585 5585번: κ±°μŠ€λ¦„λˆ νƒ€λ‘œλŠ” 자주 JOIμž‘ν™”μ μ—μ„œ 물건을 μ‚°λ‹€. JOI..

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ / C++] μž…κ΅­μ‹¬μ‚¬ 풀이

문제 nλͺ…이 μž…κ΅­μ‹¬μ‚¬λ₯Ό μœ„ν•΄ 쀄을 μ„œμ„œ 기닀리고 μžˆμŠ΅λ‹ˆλ‹€. 각 μž…κ΅­μ‹¬μ‚¬λŒ€μ— μžˆλŠ” μ‹¬μ‚¬κ΄€λ§ˆλ‹€ μ‹¬μ‚¬ν•˜λŠ”λ° κ±Έλ¦¬λŠ” μ‹œκ°„μ€ λ‹€λ¦…λ‹ˆλ‹€. μ²˜μŒμ— λͺ¨λ“  μ‹¬μ‚¬λŒ€λŠ” λΉ„μ–΄μžˆμŠ΅λ‹ˆλ‹€. ν•œ μ‹¬μ‚¬λŒ€μ—μ„œλŠ” λ™μ‹œμ— ν•œ λͺ…λ§Œ 심사λ₯Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ°€μž₯ μ•žμ— μ„œ μžˆλŠ” μ‚¬λžŒμ€ λΉ„μ–΄ μžˆλŠ” μ‹¬μ‚¬λŒ€λ‘œ κ°€μ„œ 심사λ₯Ό 받을 수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 더 빨리 λλ‚˜λŠ” μ‹¬μ‚¬λŒ€κ°€ 있으면 κΈ°λ‹€λ Έλ‹€κ°€ 그곳으둜 κ°€μ„œ 심사λ₯Ό 받을 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. λͺ¨λ“  μ‚¬λžŒμ΄ 심사λ₯Ό λ°›λŠ”λ° κ±Έλ¦¬λŠ” μ‹œκ°„μ„ μ΅œμ†Œλ‘œ ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. μž…κ΅­μ‹¬μ‚¬λ₯Ό κΈ°λ‹€λ¦¬λŠ” μ‚¬λžŒ 수 n, 각 심사관이 ν•œ λͺ…을 μ‹¬μ‚¬ν•˜λŠ”λ° κ±Έλ¦¬λŠ” μ‹œκ°„μ΄ λ‹΄κΈ΄ λ°°μ—΄ timesκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, λͺ¨λ“  μ‚¬λžŒμ΄ 심사λ₯Ό λ°›λŠ”λ° κ±Έλ¦¬λŠ” μ‹œκ°„μ˜ μ΅œμ†Ÿκ°’μ„ return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μž‘μ„±ν•΄μ£Όμ„Έμš”. μž…κ΅­μ‹¬μ‚¬λ₯Ό κΈ°λ‹€λ¦¬λŠ” 사..

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ / C++] ν”„λ¦°ν„° 풀이

문제 일반적인 ν”„λ¦°ν„°λŠ” 인쇄 μš”μ²­μ΄ λ“€μ–΄μ˜¨ μˆœμ„œλŒ€λ‘œ μΈμ‡„ν•©λ‹ˆλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— μ€‘μš”ν•œ λ¬Έμ„œκ°€ λ‚˜μ€‘μ— 인쇄될 수 μžˆμŠ΅λ‹ˆλ‹€. 이런 문제λ₯Ό λ³΄μ™„ν•˜κΈ° μœ„ν•΄ μ€‘μš”λ„κ°€ 높은 λ¬Έμ„œλ₯Ό λ¨Όμ € μΈμ‡„ν•˜λŠ” ν”„λ¦°ν„°λ₯Ό κ°œλ°œν–ˆμŠ΅λ‹ˆλ‹€. 이 μƒˆλ‘­κ²Œ κ°œλ°œν•œ ν”„λ¦°ν„°λŠ” μ•„λž˜μ™€ 같은 λ°©μ‹μœΌλ‘œ 인쇄 μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€. 인쇄 λŒ€κΈ°λͺ©λ‘μ˜ κ°€μž₯ μ•žμ— μžˆλŠ” λ¬Έμ„œ(J)λ₯Ό λŒ€κΈ°λͺ©λ‘μ—μ„œ κΊΌλƒ…λ‹ˆλ‹€. λ‚˜λ¨Έμ§€ 인쇄 λŒ€κΈ°λͺ©λ‘μ—μ„œ J보닀 μ€‘μš”λ„κ°€ 높은 λ¬Έμ„œκ°€ ν•œ κ°œλΌλ„ μ‘΄μž¬ν•˜λ©΄ Jλ₯Ό λŒ€κΈ°λͺ©λ‘μ˜ κ°€μž₯ λ§ˆμ§€λ§‰μ— λ„£μŠ΅λ‹ˆλ‹€. 그렇지 μ•ŠμœΌλ©΄ Jλ₯Ό μΈμ‡„ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 4개의 λ¬Έμ„œ(A, B, C, D)κ°€ μˆœμ„œλŒ€λ‘œ 인쇄 λŒ€κΈ°λͺ©λ‘μ— 있고 μ€‘μš”λ„κ°€ 2 1 3 2 라면 C D A B 순으둜 μΈμ‡„ν•˜κ²Œ λ©λ‹ˆλ‹€. λ‚΄κ°€ 인쇄λ₯Ό μš”μ²­ν•œ λ¬Έμ„œκ°€ λͺ‡ 번째둜 μΈμ‡„λ˜λŠ”μ§€ μ•Œκ³  μ‹ΆμŠ΅λ‹ˆλ‹€. μœ„μ˜ ..