코드굽는 타자기
SWEA[1220] - Magnetic[D3] 본문
링크
SWEA[1220]
문제설명
- -
문제풀이
- N->S만 찾으면 된다.
문제코드
import java.util.Scanner;
import java.util.StringTokenizer;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
public class Solution1220{
public static void main(String args[]) throws Exception
{
System.setIn(new FileInputStream("res/swea/1220.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T;
T=10;
for(int test_case = 1; test_case <= T; test_case++)
{
int ans=0;
int N = Integer.parseInt(br.readLine().trim());
int[][] map = new int[N][N];
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine()," ");
for (int j = 0; j < N; j++) {
map[j][i] = Integer.parseInt(st.nextToken()); //Transpose
}
}
// 시뮬레이션 말고 알고리즘으로 풀기
/*
* 좌(N) 1:N-> , 2:<-S 우(S)
*/
int chk=-1;
for (int i = 0; i < N; i++) {
chk=-1; //아무것도 안만난 상태
for (int j = 0; j < N; j++) {
if(chk==-1 && map[i][j]==1) { //처음 N극을 만남
chk=1;
}
else if(chk==-1 && map[i][j]==2){ //처음 S극을 만남->버리기
continue;
}
else if(chk==1 && map[i][j]==2) { //N극이 S극을 만남
chk=2;
ans++;
}
else if(chk==2 && map[i][j]==1) { //S극이 N극을 만남
chk=1;
//이 N극이 마지막 N극뭉치일 경우 알아서 count 해제
}
}
}
System.out.println("#"+test_case+" "+ans);
}
}
}
아쉬운점
- 문제조건 제대로 안읽고 N-S-N 의 경우 교착이 2개라고 생각했었음
- 교착 1개라 그냥 N-S만 고려하면되었음
- 시뮬로도 풀어보면 좋을 것 같음
잘한점
- 시뮬안돌림
'알고리즘 > 탐색' 카테고리의 다른 글
SWEA[3752] - 가능한 시험 점수[D4] (0) | 2020.02.06 |
---|---|
SWEA[1859] - 백만 장자 프로젝트[D2] (0) | 2020.01.29 |
Baekjoon[1024] - 수열의 합 (0) | 2020.01.29 |
Comments