코드굽는 타자기

SWEA[1220] - Magnetic[D3] 본문

알고리즘/탐색

SWEA[1220] - Magnetic[D3]

bright-jun 2020. 2. 5. 19:20

링크

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