개발 공부 기록
[SWEA 1220번 / JAVA] Magnetic 본문
Question
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14hwZqABsCFAYD
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
💡 Solution
만약 테이블을 탐색하면서 1(N극)을 발견했다면, 해당 위치의 아래에서부터 쭉 2(S극)가 있는지를 찾으면 됩니다. 이때 아래를 탐색하는데 2가 아닌 자신과 동일한 1을 발견했다면, 자신의 아래를 탐색하는 for문을 빠져나옵니다. (왜냐하면 결국 자신의 아래 있는 1도 자기 아래를 탐색할텐데, 그때 교착상태를 파악하면 됩니다.)
1이 교착상태를 찾았으니, 2를 기준으로는 굳이 찾지 않아도 괜찮습니다.
💻 Code
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.security.Identity;
import java.util.StringTokenizer;
public class SWEA1220 {
static int[][] map;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
for (int tc = 1; tc <= 10; tc ++) {
int T = Integer.parseInt(br.readLine());
map = new int[T][T];
int count = 0;
for (int i = 0; i < T; i++) {
st = new StringTokenizer(br.readLine(), " ");
for (int j = 0; j < T; j++) {
map[i][j] = Integer.parseInt(st.nextToken());
}
}
//1은 N극(빨강), 2는 S극(파랑)
for (int i = 0; i < T; i ++) {
for (int j = 0; j < T; j++) {
if (map[i][j] == 1) { //N극이라면
for (int k = i + 1; k < T; k++) {
if (map[k][j] == 1) {
break;
}
else if (map[k][j] == 2) {
count++;
break;
}
}
}
}
}
System.out.printf("#%d %d\n", tc, count);
}
}
}
'PS > Implement' 카테고리의 다른 글
[SWEA 1228번 / JAVA] 암호문1 (0) | 2023.11.16 |
---|---|
[SWEA 1221번 / JAVA] GNS (1) | 2023.11.14 |
[SWEA 1217번 / JAVA] 거듭 제곱 (0) | 2023.11.13 |
[SWEA 1215번, 1216 / JAVA] 회문 1, 회문 2 (1) | 2023.11.13 |
[SWEA 1225번 / JAVA] 암호생성기 (1) | 2023.11.12 |