๐ค Brute force ๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ?
'๋ฌด์ํ ํ' ์ผ๋ก ํด์ํ ์ ์๊ฒ ์ต๋๋ค, ์ด ๋ป ์ฒ๋ผ ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ๋ฌด์ํ๊ฒ ํ๋ํ๋ ํ์ํ๋ ์๊ณ ๋ฆฌ์ฆ ์ ๋๋ค.
๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ ๋ถ ํ์ํ์ฌ ์กฐ๊ฑด์ ๋ง๋ ๋ต์ ์ฐพ๊ธฐ ๋๋ฌธ์ ์ ํํ ๋ต์ ๋ณด์ฅํฉ๋๋ค.
ํ์ง๋ง ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ํ์ํ๊ธฐ ๋๋ฌธ์ ์๊ฐ๋ณต์ก๋๊ฐ ๋๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ณ ๋ คํ์ฌ ์ฌ์ฉํด์ผํฉ๋๋ค.
๋ํ ๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๋ ํ์ด ์๊ธฐ๋๋ฌธ์ ์ฃผ์ด์ง ๋ฌธ์ ์ ํ์ ๋ฐ๋ผ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ํ์ดํฉ๋๋ค.
- ๋จ์ Brute force ( for๋ฌธ )
- ์ฌ๊ทํธ์ถ
- ๋นํธ๋ง์คํฌ
- ์์ด
- DFS / BFS
๐ก ํ์ง๋ง ๋นํจ์จ์ ์ผ๋ก ๋ณด์ด๋ ๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฌ์ฉํ ๊น์?
์ ๋ ฅ๋๋ ๋ฒ์๊ฐ ์๊ณ , ํ์ํด์ผํ ๊ฒฝ์ฐ์ ์๊ฐ ์ ์ ๊ฐ๋จํ ๋ฌธ์ ์ ๊ฒฝ์ฐ ์ต์ ํ๋ ๋ณต์กํ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๋ ๋น์ฉ์ด ๋๊ธฐ๋๋ฌธ์ ์ง๊ด์ ์ผ๋ก ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ์ชฝ์ด ๋ ํจ์จ์ ์ผ ์ ์์ต๋๋ค.
๋ํ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ํ์ํ์ฌ ๋ต์ ๋์ถํ๋ฏ๋ก ํญ์ ์ ํํ ๋ต์ ์ฐพ์๋ผ ์ ์๋ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ด๊ธฐ๋ ํฉ๋๋ค.
โ ๋ฌธ์ ์ ํ
์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ง๋ ์กฐํฉ์ ์ฐพ๋ ๋ฌธ์
โ ๋ฌธ์ ํ์ด
๋์ด๋ : ๋ธ๋ก ์ฆ1 ๐ฅ
9๋ช ์ ๋์์ด๋ค ์ค 7๋ช ์ ๋์์ด๋ค์ ํค์ ํฉ์ด 100์ด ๋๋ ๋์์ด๋ค(์กฐํฉ)์ ์ฐพ๋ ๋ฌธ์ ์ ๋๋ค.
๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ์๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ง๋ง ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํด์ ์ง๊ด์ ์ผ๋ก ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ํ์ํ์ฌ ๋ฌธ์ ๋ฅผ ํ์ด๋ณด๊ฒ ์ต๋๋ค.
์ฒ์ ๋ฌธ์ ๋ฅผ ์ ํ์ ๋ ๋์์ด์ ํค๋ฅผ ํ๋ช ์ฉ ๋ํ์ฌ ๋ฌธ์ ๋ฅผ ํ์ด๋๊ฐ๋ ค ํ์ง๋ง 7๋ช ์ ์กฐํฉ์ ๋ง๋ค์ด์ผ ํ๊ธฐ๋๋ฌธ์ ๋ฐ๋ณต๋ฌธ์ ๋ง์ด ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.๐ญ
๊ทธ๋ ๋ค๋ฉด ๋ฐ๋๋ก 9๋ช ์ ๋์์ด์ ํค์ค 2๋ช ์ ๋์์ด ํค๋ฅผ ๋นผ๋์์ผ๋ก ์ ๊ทผํ๋ค๋ฉด 2๋ช ์ ๋์์ด์ ์กฐํฉ๋ง ์ ๊ฒฝ์ฐ๋ฉด ๋ ๊ฒ ์ ๋๋ค.
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.lang.StringBuilder;
import java.util.Arrays;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader( new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int[] dwarfs = new int[9];
int sum = 0;
for( int i = 0; i<9; i++){
dwarfs[i] = Integer.parseInt(br.readLine());
sum += dwarfs[i]; // 9๋ช
์ ๋์์ด ํค์ ์ด ํฉ์ ๊ตฌํฉ๋๋ค.
}
for( int i = 0; i<8; i++){
for( int j = i+1; j<9; j++){
/*
* 2๋ช
์ ๋์์ด ํค๋ฅผ ๋บ ๊ฐ์ด 100์ด๋ผ๋ฉด ํค๋ฅผ 0์ผ๋ก ๋ณ๊ฒฝํจ์ผ๋ก์จ ์ ์ธํฉ๋๋ค
* ์ ๋ ฌ์ ํตํด ์ ์ธํ ๊ฐ์ ๋งจ ์์ผ๋ก ์์น์ํค๊ณ
* index 2๋ฒ ( k = 2 ) ๋ถํฐ ๋์์ด์ ํค๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
*/
if( sum - dwarfs[i] - dwarfs[j] == 100){
dwarfs[i] = 0;
dwarfs[j] = 0;
Arrays.sort(dwarfs);
for( int k = 2; k<9; k++){
sb.append(dwarfs[k]).append("\n");
}
System.out.print(sb);
return;
}
}
}
}
}
๐
๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ์ค ์ ์๋ ค์ง ๋ธ๋์ญ ๋ฌธ์ ์ฒ๋ผ ๊ณ ์ ๋ ์กฐํฉ์ ๊ตฌํ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ ๊ฒ ์ ๊ทผํ๋ ค ํ์ผ๋ ์กฐํฉ์ ๋ฒ์๊ฐ ๋ง์ ํ๋ฒ ๋ ์๊ฐ ํด์ผํ๋ ๋ฌธ์ ๊ฐ์ต๋๋ค.
DFS์๊ณ ๋ฆฌ์ฆ๊ณผ ๊ฐ์ ์ฌ๊ทํธ์ถ์ ํตํด์๋ ํด๊ฒฐํ ์ ์์ง๋ง ์ฌ๊ท์๋ํ ์ดํด๊ฐ ์กฐ๊ธ ๋ถ์กฑํ๊ฒ ๊ฐ์ ์ง๊ด์ ์ธ for๋ฌธ์ ํตํด ํ์ด๋ณด์์ต๋๋ค.