์์ ํ์
์ฝ๋ฉ ํ ์คํธ๋ฅผ ๋ณผ ๋ ๊ฐ์ฅ ๊ธฐ์ด์ ์ธ ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ์ถ์ ๋น๋๊ฐ ๋์ ์๊ณ ๋ฆฌ์ฆ์ด ๊ทธ๋ฆฌ๋์ ์์ ํ์ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ณ ํ๋ค. ๊ทธ๋์ ์ด๋ฒ ์ฃผ์ฐจ ๋ฌธ์ ๋ ๊ทธ๋ฆฌ๋, ์์ ํ์ ๊ทธ๋ฆฌ๊ณ ์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ๋ฌธ์ ๋ฅผ ๊ณต์งํ๋ค. ๊ทธ๋ ๋ค๋ฉด ๋๋์ฒด ์์ ํ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ญ๊น?
(์ ๋ธ๋ก๊ทธ์์ ์์ฃผ ์์ธํ ์ค๋ช
ํ๊ณ ์๋ค.)
์ ๊ธ์์ ์์ ํ์ ๊ธฐ๋ฒ์ ์ข ๋ฅ๋ก
- Brute Force : for๋ฌธ๊ณผ if๋ฌธ์ ์ด์ฉํ์ฌ ์ฒ์๋ถํฐ ๋๊น์ง ํ์ํ๋ ๋ฐฉ๋ฒ
- ๋นํธ ๋ง์คํฌ : ์ด์ง์ ํํ์ ์๋ฃ๊ตฌ์กฐ๋ก ์ฐ๋ ๊ธฐ๋ฒ (AND, OR, XOR, SHIFT, NOT)
- ์ฌ๊ท ํจ์
- ์์ด : ์๋ก ๋ค๋ฅธ n๊ฐ์ ์์์์ r๊ฐ์ ์ค๋ณต์ ํ์ฉํ์ง ์๊ณ ์์๋๋ก ๋์ด ๋์ ์
- BFS(๋๋น์ฐ์ ํ์), DFS(๊น์ด์ฐ์ ํ์)
๋ผ๊ณ ํ๋ค. ์ด๋ฒ์ ์ถ์ ๋ ๋ฉ์น
๋ฌธ์ ๋ Brute Force(๋ธ๋ฃจํธ ํฌ์ค) ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ณ ํ๋๋ฐ, for๋ฌธ๊ณผ if๋ฌธ์ ์ด์ฉํ์ฌ ์ฒ์๋ถํฐ ๋๊น์ง ํ์ํ๋ค๊ณ ํ๋ค.
๋ธ๋ฃจํธ ํฌ์ค ์๊ณ ๋ฆฌ์ฆ ์ ํ์ ํ์ด๊ฐ ์ฌ์ด ๋งํผ ๋ง์ ๋ฌธ์ ๋ฅผ ๊ฐ์ง๊ณ ์๋๋ฐ ๋ํ์ ์ผ๋ก
- ๋น๊ตํด์ผ ํ ๊ฐ์๊ฐ ๋ง์ผ๋ฉด ๋ง์์ง ์๋ก ๋ฐํ์์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค.
- ๊ฐ์ ์ด์ ๋ก ๋ฉ๋ชจ๋ฆฌ ์ฉ๋์ ๋ง์ด ์ก์ ๋จน๋๋ค.
ํด๋น ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ ๋, 1๋ถํฐ 1000์ต๊น์ง ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋น๊ตํ๋ค๊ณ ํ๋ค๋ฉด ๊ฒฝ์ฐ์ ์๋
100,000,000,000 * 100,000,000,000 = ์๊ฐํ๊ธฐ๋ ์ซ์
์๊ฐํ๊ธฐ๋ ์ซ์ ๋งํผ์ ๊ฒฝ์ฐ์ ์๋ฅผ ๋น๊ตํด์ผ ํ๋ค. ๊ทธ๋ ๋ค๋ฉด ์์์ ๋งํ ๋ฌธ์ ์ ์ด ๋ฐ์ํ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์ ์๊ธด ์ ์ ๋ง์น ๋ฒ๋ธ ์ ๋ ฌ๊ณผ ์กฐ๊ธ ๋น์ทํ ๋๋์ ๋ฐ์๋ค. ๋ฒ๋ธ ์ ๋ ฌ๋ ์์ ์ ์์น์์ ๋ค์ ์กด์ฌํ๋ ๋ชจ๋ ์์ ๋น๊ต๋ฅผ ํ๋๋ฐ ์์ ํ์์ ์กฐ๊ธ ๋ ๋ฐ์ ํ ๊ฒ์ด ๋ฒ๋ธ ์ ๋ ฌ ์๋๊น ์๊ฐํด๋ณธ๋ค! (์๋๊ฑฐ๋ค๐คฅ)
๋ฉ์น ๋ฌธ์
ํด๋น ๋ฌธ์ ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋น๊ตํ๋ ๊ฒ๋ณด๋ค ์ ๋ ฅ ๋ฐ์ ๊ฐ(String)์ int๋ก ๊ฐ๊ฐ ๋ณํ ํ ์ ์ฅํ๋ ๊ฒ์ด ๋ ์ด๋ ค์ ๋ค.
- StringTokenizer ํด๋์ค๋ delim(๊ตฌ๋ถ์)์ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด์ ์๋ผ Token์ผ๋ก ์ ์ฅํ๋ค.
- ์ด Token์ ํ ๋ฒ ํธ์ถํ๊ณ ๋๋ฉด ์ญ์ ๋๋ค.
- ๋ง์น Set ์๋ฃ ๊ตฌ์กฐ ๊ฐ๊ตฌ๋.
๋๋ ์
๋ ฅ ๋ฐ์ ๊ฐ์ int[][] 2์ฐจ์ ๋ฐฐ์ด๋ก ์ ์ฅํ๊ณ ์ถ์๊ณ , ์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์ StringTokenizer ๊ฐ์ฒด๋ n๊ฐ ๋งํผ์ 1์ฐจ์ ๋ฐฐ์ด๋ก ๋ง๋ค์ด์ผ ํ๋ค.
๊ทธ ํ์ StringTokenizer ๊ฐ ์ธ๋ฑ์ค๋ง๋ค ์ด๋ค ๊ตฌ๋ถ์๋ก Token์ ํด๋น ์ธ๋ฑ์ค ์์ Token์ผ๋ก ์ ์ฅํ ๊ฒ์ธ์ง ์์ฑ์๋ฅผ ์ ์ธ ํด์ค์ผ ํ๋ค.
- ์ ๋ ฅ ๋ฐ์ ๋ฌธ์์ด์ int[][] 2์ฐจ์ ๋ฐฐ์ด๋ก ์ ์ฅํ๋ ๊ตฌ์กฐ
๊ทธ๋ฆผ์ ์ด๋ป๊ฒ ๊ทธ๋ ค์ผ ํ ์ง ๋ชฐ๋ผ์ ์์ฝ๋ฉ์ฒ๋ผ ์ ์ด ๋ณด์๋ค!
StringTokenizer ํด๋์ค์ ๋ํ ์์ธํ ๊ทธ๋ฆผ์ ์๋ ๋งํฌ์์ ํ์ธํ ์ ์๋ค.
์ด์ ์ฝ๋๋ฅผ ํ์ธํด ๋ณผ ์ฐจ๋ก๋ค. ์
๋ ฅ ๋ฐ์ ๊ฐ์ int ์๋ฃํ์ผ๋ก ๋ฐ๊ฟจ๋ค๋ฉด, ์ด์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํด์ผ ํ๋ค.
์ฆ, ์ด 5๋ช
์ ์ฌ๋์ด ์๋ค๊ณ ๊ฐ์ ํ์ ๋, ์์ ์ ์ ์ธํ ๋ชจ๋ ์ฌ๋๋ค๊ณผ ๋น๊ตํด์ผ ํ๋ค. ์ด ๋์ ๊ฒฝ์ฐ์ ์๋
(5-1) * 5 = 20
๊ฒฝ์ฐ์ ์ = 20๊ฐ
๊ทธ๋ฆผ์ ๋๋ฌด ๋ชป ๊ทธ๋ ธ์ง๋ง ์์ ์ ์ ์ธํ ์ฌ๋๋ค์ ๋น๊ตํ์ ๋ ๊ทธ๋ ค์ง๋ ๋ชจ์์ ์์ ๊ฐ๋ค. ์ด ๊ฒ์ ์ฝ๋๋ก ํ์ธ ํด๋ณด์!
-
์ํ๋น๋น ์์ ํ์ ์ฝ๋
package ์ฌ์ฑํ.์๊ณ ๋ฆฌ์ฆ_3์ฃผ์ฐจ; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class ๋ฉ์น_7568 { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuffer sb = new StringBuffer(); int n = Integer.parseInt(br.readLine()); int[][] people = new int[n][2]; StringTokenizer[] st = new StringTokenizer[n]; for (int i = 0; i < n; i++) { int m = 0; st[i] = new StringTokenizer(br.readLine(), " "); while (st[i].hasMoreTokens()) { people[i][m] = Integer.parseInt(st[i].nextToken()); m++; } } for (int i = 0; i < people.length; i++) { int rank = 1; for (int k = 0; k < people.length; k++) { boolean check = (people[i][0] < people[k][0]) && (people[i][1] < people[k][1]) &&(i != k); if (check) { rank++; } } sb.append(rank + " "); } System.out.println(sb.toString()); } }
์์ ์ฝ๋๋ฅผ ํ์ธํ์ ๋, ๋ค์ค for๋ฌธ์ ์ฌ์ฉํ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์์ ์ ๋ปํ๋ i
, i
์ ๋น๊ตํ ๋ค๋ฅธ ์ฌ๋์ ๋ปํ๋ k
.
์ฆ, i
๋ฅผ ๊ธฐ์ค์ผ๋ก k
๋ฅผ ๋น๊ตํ๋ฉด ๋๋ค. ์ด ๋, i
๋ณด๋ค ๋ชธ๋ฌด๊ฒ, ํค๊ฐ ํฌ๋ค๋ฉด count
๊ฐ์ด + 1 ์ฆ๊ฐํ๋ค.
์ด์ i
์ ํ ๋น๋ count๋ฅผ StringBuffer ๊ฐ์ฒด์ ์ ์ฅํ์ฌ ์ด๋ฅผ ์ถ๋ ฅํ๋ฉด ๋ฌธ์ ํด๊ฒฐ ์๋ฃ!
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 11729 | ์ฌ๊ท ํจ์, ํ๋ ธ์ด์ ํ ์ด๋ ์์ (2) | 2020.10.18 |
---|---|
๋ฐฑ์ค 5585 | ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ, ๊ฑฐ์ค๋ฆ ๋ (0) | 2020.10.18 |
๋ฐฑ์ค 1874 | ์คํ ์์ด (0) | 2020.10.16 |
๋ฐฑ์ค 10818 | ์ต์, ์ต๋๊ฐ ๊ตฌํ๊ธฐ (0) | 2020.10.16 |
๋ณ ์ฐ๊ธฐ (0) | 2020.09.29 |