๐ฅ์ฝ๋ฉํ
์คํธ:Algorithm
๋๋ณด๊ธฐ [Gold IV] ๊ฑฐ์ง๋ง - 1043 ๋ฌธ์ ๋งํฌ ์ฑ๋ฅ ์์ฝ ๋ฉ๋ชจ๋ฆฌ: 14352 KB, ์๊ฐ: 128 ms ๋ถ๋ฅ ์๋ฃ ๊ตฌ์กฐ, ๋ถ๋ฆฌ ์งํฉ, ๊ทธ๋ํ ์ด๋ก , ๊ทธ๋ํ ํ์ ์ ์ถ ์ผ์ 2024๋
1์ 3์ผ 16:32:22 ๋ฌธ์ ์ค๋ช
์ง๋ฏผ์ด๋ ํํฐ์ ๊ฐ์ ์ด์ผ๊ธฐ ํ๋ ๊ฒ์ ์ข์ํ๋ค. ํํฐ์ ๊ฐ ๋๋ง๋ค, ์ง๋ฏผ์ด๋ ์ง๋ฏผ์ด๊ฐ ๊ฐ์ฅ ์ข์ํ๋ ์ด์ผ๊ธฐ๋ฅผ ํ๋ค. ์ง๋ฏผ์ด๋ ๊ทธ ์ด์ผ๊ธฐ๋ฅผ ๋งํ ๋, ์๋ ๊ทธ๋๋ก ์ง์ค๋ก ๋งํ๊ฑฐ๋ ์์ฒญ๋๊ฒ ๊ณผ์ฅํด์ ๋งํ๋ค. ๋น์ฐํ ๊ณผ์ฅํด์ ์ด์ผ๊ธฐํ๋ ๊ฒ์ด ํจ์ฌ ๋ ์ฌ๋ฏธ์๊ธฐ ๋๋ฌธ์, ๋๋๋ก์ด๋ฉด ๊ณผ์ฅํด์ ์ด์ผ๊ธฐํ๋ ค๊ณ ํ๋ค. ํ์ง๋ง, ์ง๋ฏผ์ด๋ ๊ฑฐ์ง๋ง์์ด๋ก ์๋ ค์ง๊ธฐ๋ ์ซ์ดํ๋ค. ๋ฌธ์ ๋ ๋ช๋ช ์ฌ๋๋ค์ ๊ทธ ์ด์ผ๊ธฐ์ ์ง์ค์ ์๋ค๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ์ด๋ฐ ์ฌ๋๋ค์ด ํํฐ์ ์์ ๋๋, ์ง๋ฏผ์ด๋ ์ง์ค์ ์ด์ผ๊ธฐํ ์ ..
๐ฅ์ฝ๋ฉํ
์คํธ:Algorithm
๋ฌธ์ : https://www.acmicpc.net/problem/12851 12851๋ฒ: ์จ๋ฐ๊ผญ์ง 2 ์๋น์ด๋ ๋์๊ณผ ์จ๋ฐ๊ผญ์ง์ ํ๊ณ ์๋ค. ์๋น์ด๋ ํ์ฌ ์ N(0 ≤ N ≤ 100,000)์ ์๊ณ , ๋์์ ์ K(0 ≤ K ≤ 100,000)์ ์๋ค. ์๋น์ด๋ ๊ฑท๊ฑฐ๋ ์๊ฐ์ด๋์ ํ ์ ์๋ค. ๋ง์ฝ, ์๋น์ด์ ์์น๊ฐ X์ผ ๋ www.acmicpc.net ๊ธฐ์กด์ ์จ๋ฐ๊ผญ์ง ๋ฌธ์ ์์ ์ต๋จ๊ฒฝ๋ก์ ๊ฐฏ์๊น์ง ๊ตฌํด์ผ ํ๋ค. 1. ๋ชฉ์ ์ง์ ๋๋ฌํ๋ฉด ํจ์๋ฅผ ์ข
๋ฃํ๋ ๊ฒ์ด ์๋ ๊ณ์ ํ์์ ์ด์ด๋๊ฐ๋๋ก ํจ์๋ฅผ ๊ตฌ์ฑํ๋ค. while(!pq.isEmpty()){ Node cur = pq.poll(); if(cur.idx==K && cur.w==dist[K]){ // ๋ชฉํ์ง์ ์ ๋๋ฌํ ๊ฒฝ์ฐ count+=1; } ... } ..
๐ฅ์ฝ๋ฉํ
์คํธ:Algorithm
์ ์์ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ํธ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ , ํ์์ํ๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๋ค. ํ์ด ์์ 1. ์
๋ ฅ์ ๋ฐํ์ผ๋ก ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑ. (๋
ธ๋ ํด๋์ค๋ฅผ ํ์ฉ) 2. ๋
ธ๋ ํด๋์ค ๋ด๋ถ์ insert ํจ์ ์์ฑ. insert ํจ์ : ์
๋ ฅ๋ ๋
ธ๋์ ๊ฐ์ ํ์ฌ ๋
ธ๋ ๊ฐ๊ณผ ๋น๊ตํ์ฌ, ์ผ์ชฝ ํน์ ์ค๋ฅธ์ชฝ์ ๋ฌ์์ฃผ๋ ํจ์. ์ด๋ insert ํจ์์ ์ฌ๊ทํจ์๋ฅผ ์ ์ฉํด์ผ ํ๋ค. ํด๋น ์์น๊ฐ ๋น์ด์์ผ๋ฉด ํด๋น ์์น์ ๋
ธ๋๋ฅผ ๋ฌ์์ฃผ๊ณ , ๋น์ด์์ง ์๋ค๋ฉด ํด๋น ์์น์ ์๋ ๋
ธ๋์ insertํจ์๋ฅผ ์ฌ๊ทํธ์ถ ์ฝ๋ package com.mincheolsong; import java.io.*; import java.util.*; public class Main { // BOJ 5639๋ฒ ์ด์ง ๊ฒ์ ํธ๋ฆฌ static class Node{ int num; N..
๐ฅ์ฝ๋ฉํ
์คํธ:Algorithm
๋ค์ต์คํธ๋ผ๋ก ํ ์ ์๋ ๋ฌธ์ ์ํฉ ํ ์ง์ ์์ ๋ค๋ฅธ ํ ์ง์ ๊น์ง์ ์ต๋จ ๊ฒฝ๋ก ํ ์ง์ ์์ ๋ค๋ฅธ ๋ชจ๋ ์ง์ ๊น์ง์ ์ต๋จ ๊ฒฝ๋ก ๋ชจ๋ ์ง์ ์์ ๋ค๋ฅธ ๋ชจ๋ ์ง์ ๊น์ง์ ์ต๋จ ๊ฒฝ๋ก ํด๋น ๋ฌธ์ ๋ ํ ์ง์ ์์ ๋ค๋ฅธ ํ ์ง์ ๊น์ง์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํด์ผ ํ๋ ๋ฌธ์ ์ด๋ค. ๋ฌธ์ ๋ฅผ ๊ทธ๋ํ๋ก ๋ฐ๊พธ๋๊ฒ ์ค์ํ๋ค๊ณ ์๊ฐํ๋ค. ์๋น์ด๋ ์์น X์์ -1, +1, *2 ๋ก ์์ง์ผ ์ ์์ผ๋๊น ์์น X๋ฅผ ๋
ธ๋๋ผ๊ณ ์๊ฐํ์ ๋ X-1, X+1, X*2 ๋ฅผ ์ฐ๊ฒฐ๋ ๋
ธ๋, ๊ฐ์ค์น๋ ๋ฌธ์ ์์ ์ฃผ์ด์ง (1, 1, 0) ์ผ๋ก ์๊ฐํ๋ค. ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ (์ฐ์ ์์ํ ํ์ฉ) ์ฝ๋ package com.mincheolsong; import java.io.*; import java.util.*; public class Main { // boj 13549 ..
๐ฅ์ฝ๋ฉํ
์คํธ:Algorithm
ํธ๋ฆฌ์ ์ง๋ฆ์ด๋ ํธ๋ฆฌ์์ ์์์ ๋ ์ ์ฌ์ด์ ๊ฑฐ๋ฆฌ ์ค ๊ฐ์ฅ ๊ธด ๊ฒ์ด๋ค. ๊ฒฐ๋ก ์์์ ์ ์ ์์ ๊ฐ์ฅ ๊ฑฐ๋ฆฌ๊ฐ ๊ธด ๋
ธ๋๋ฅผ ์ฐพ๋๋ค. (dfs ํ ๋ฒ) ์ฐพ์์ง ๋
ธ๋์์ ๊ฐ์ฅ ๊ฑฐ๋ฆฌ๊ฐ ๊ธด ๋
ธ๋๊น์ง์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ฉด ๋๋ค. (dfsํ ๋ฒ) (์ด dfs ๋ ๋ฒ์ ํธ๋ฆฌ์ ์ง๋ฆ์ ์ฐพ์ ์ ์๋ค) ์ค๋ช
์ ํธ๋ฆฌ์ ๊ฒฝ์ฐ 1 - 3 - 4 - 5 ๊ฐ ํธ๋ฆฌ์ ์ง๋ฆ(ํธ๋ฆฌ์์ ์์์ ๋ ์ ์ฌ์ด์ ๊ฑฐ๋ฆฌ ์ค ๊ฐ์ฅ ๊ธด ๊ฒ) ๊ฒฝ๋ก๊ฐ ๋๋ค. ์ฌ๊ธฐ์ ํธ๋ฆฌ์ ์ง๋ฆ์ด ๋๋ ์ ๋ ๋
ธ๋๋ 1๊ณผ 5์ด๋ค. ์ด ๋ ์์์ ์ ์ ์์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ๊ธด ๋
ธ๋๋ 1 ํน์ 5๋ฅผ ๋ฐ๋์ ์ง๋๊ฒ ๋๋ค. 1์์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ๊ธด ๊ฒฝ๋ก : 1 - 3 - 4 - 5 2์์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ๊ธด ๊ฒฝ๋ก : 2 - 4 - 5 3์์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ๊ธด ๊ฒฝ๋ก : 3 - 4 - 5 4์์ ๊ฑฐ..
๐ฅ์ฝ๋ฉํ
์คํธ:Algorithm
๋ชจ๋ ๋
ธ๋์์ ๋ค๋ฅธ ๋ชจ๋ ๋
ธ๋๊น์ง์ ์ต๋จ๊ฒฝ๋ก๋ฅผ ๋ชจ๋ ๊ณ์ฐํจ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋จ๊ณ๋ณ๋ก ๊ฑฐ์ณ ๊ฐ๋ ๋
ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์๊ณ ๋ฆฌ์ฆ์ ์ํ ๋ค์ต์คํธ๋ผ์ ๋ค๋ฅด๊ฒ ๋งค ๋จ๊ณ๋ง๋ค ๋ฐฉ๋ฌธํ์ง ์์ ๋
ธ๋ ์ค์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ๋ ๋
ธ๋๋ฅผ ์ฐพ๋ ๊ณผ์ ์ด ํ์ํ์ง ์์. 2์ฐจ์ ํ
์ด๋ธ์ ์ต๋จ ๊ฑฐ๋ฆฌ ์ ๋ณด๋ฅผ ์ ์ฅ DP ์ ํ์ ์ํจ (์ ํ์์ ๋ง๊ฒ 3์ค FOR๋ฌธ์ ์ด์ฉํด์ 2์ฐจ์ ํ
์ด๋ธ์ ๊ฐฑ์ ) ๋
ธ๋์ ๊ณ์๊ฐ ๋ฐ์ง๊ทธ๋ํ(์์ ๊ทธ๋ํ์ ๊ฐ๊น์ด ๊ทธ๋ํ)์ธ ๊ฒฝ์ฐ ํ๋ก์ด๋ ์์ฌ ์๊ณ ๋ฆฌ์ฆ์ด ํจ์จ์ ์ด๋ค. ๋ฐ์ง๊ทธ๋ํ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ค์ต์คํธ๋ผ๋ฅผ n๋ฒ ๋๋ฆฌ๋๊ฒ ๋น ๋ฅด๋ค O(n^3)์ ์๊ฐ๋ณต์ก๋๋ก ๋ค์ต์คํธ๋ผ(์ธ์ ํ๋ ฌ์ ์ฌ์ฉํ ๊ฒฝ์ฐ)์ ์๊ฐ๋ณต์ก๋์ ๋์ผํ๋ค N์ด 100์ด๋ฉด → 100๋ง์ด์ด์ ๊ฐ๋ฅ, 500์ด์ด๋ → 1์ต 2์ฒ 500๋ง ์ด์ด์ tryํด๋ณผ ..
๐ฅ์ฝ๋ฉํ
์คํธ:Algorithm
dp๋ก ํธ๋ ๋ฌธ์ . ์๊ฒ๋ ์ ์ ํ์์ ์ธ์ธ ๋ arr[r][c]๋ฅผ ํฌํจํ๋ ๊ฒฝ์ฐ์ ํฌํจํ์ง ์๋ ๊ฒฝ์ฐ๋ง ์๊ฐํ์ง ๋ง์ ์ด๋ฒ ๋ฌธ์ ๋ arr[r][c]๋ฅผ ๋ฝ์ ์ ์๋ ์ด์ ์์น๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ค! dp๋ ์ต์ ํด์ ๋ถ๋ถ์ต์ ํด๋ฅผ ์๊ฐํ๋ฉฐ ์ ํ์์ ์ธ์์ผ ํ๋ค. ์ฒ์ ์ ๊ทผ๋ฐฉ์ arr[r][c] ์ ์คํฐ์ปค๋ฅผ ๋ผ๋ ๊ฒฝ์ฐ์ ๋ผ์ง ์๋ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํด์ ์ ํ์์ ์ธ์ฐ๋ ค๊ณ ํ๋ค. ์ฌ๋ฐ๋ฅธ ์ ๊ทผ๋ฐฉ์ arr[r][c]์ ์คํฐ์ปค๋ฅผ ๋ ์ ์๋ ๊ฒฝ์ฐ๋ง ๊ณ ๋ คํ๊ณ , arr[r][c] ์คํฐ์ปค๋ฅผ ๋ ์ ์๋ ์ด์ ์์น (arr[1][c-1] or arr[1][c-2] ํน์ arr[0][c-1] or arr[0][c-2]) ๋ฅผ ๋ถ๋ถ์ต์ ํด๋ก ๋ณด๋ ๊ฒ ์ด์๋ค. ์ ํ์ r=0์ธ ๊ฒฝ์ฐ dp[r][c] = max{dp[1][c-1], dp[1][c..
๐ฅ์ฝ๋ฉํ
์คํธ:Algorithm
๋ฐฑ์ค ๋ฌธ์ ๋ฅผ ํ๋ค ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๋ฅผ ๋ง๋จ.. ๋ถ๋ช
๋ค๋ฅธ์ฌ๋ ์ฝ๋์ ๊ฐ์๋ฐ, ์ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๊ฐ ๋๋์ง ์ด์ํ๋ค. ์ด์ ๋ bfs ๋ฐฉ๋ฌธ์ฒดํฌ ์์น๋ฅผ ์ ๋ชป ํด์ ๊ฒฐ๋ก : ํ์ ์ฝ์
ํ๋ ์๊ฐ์ ๋ฐฉ๋ฌธ์ฒดํน์ ํด์ ์ค๋ณต์ ๋ฐฉ์งํ์ ์๋ชป๋ ๋ฐฉ๋ฌธ์ฒดํฌ ์์น (ํ๋ฅผ ๋ฝ๋ ์๊ฐ ๋ฐฉ๋ฌธ์ฒดํฌ) ์๋ ์ฝ๋๋ ๋ฌธ์ ์ ์ฌ์ฉ๋ bfsํจ์ ์ผ๋ถ๋ถ์
๋๋ค static boolean move(){ Queue tmp = new LinkedList(); while(!bq.isEmpty()){ int[] c = bq.poll(); int cr = c[0], cc=c[1]; if(cr==er && cc == ec){ return true; } chk[c[0]][c[1]]=true; // ๋ฐฉ๋ฌธ์ฒดํฌ for(int d=0;d