SW Expert Academy - 1220번(Magnetic)

최지홍·2022년 2월 26일
0

SW Expert Academy

목록 보기
27/36

문제 출처: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14hwZqABsCFAYD&categoryId=AV14hwZqABsCFAYD&categoryType=CODE&problemTitle=1220&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1&&&&&&&&&


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Solution {

	public static void main(String[] args) throws IOException {
		StringBuilder sb = new StringBuilder();
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
		
		for (int t = 0; t < 10; t++) {
			int N = Integer.parseInt(reader.readLine()); // 정사각형 한 변의 길이
			
			// 배열 채우기
			int[][] arr = new int[100][100];
			for (int i = 0; i < 100; i++) {
				StringTokenizer tokenizer = new StringTokenizer(reader.readLine());
				for (int j = 0; j < 100; j++) {
					arr[i][j] = Integer.parseInt(tokenizer.nextToken());
				}
			}
			
			int answer = 0;
			
			for (int i = 0; i < 100; i++) {
				boolean flag = false;
				for (int j = 0; j < 100; j++) {
					if (arr[j][i] == 1) flag = true; // N극을 만남
					if (arr[j][i] == 2 && flag) {
						answer++;
						flag = false;
					}
				}
			}
			
			sb.append("#").append(t + 1).append(" ");
			sb.append(answer).append("\n");
		}
		
		System.out.println(sb);
	}

}

  • 규칙성을 찾으면 쉽게 풀 수 있는 문제였다.
  • 처음에 위, 아래 양방향에서 접근하는 방식으로 해결하려 하였는데, 그럴 필요가 없었다. 어느 한쪽을 기준으로 잡고 접근하면 가능한 문제였다.
  • 위쪽이 N극이었는데, 위에서부터 탐색하다가 N극을 만나면 boolean 변수의 값을 true로 바꾸고, S극을 만나면 교착상태가 있다는 뜻이므로 1을 증가하고 boolean을 false로 바꿔 계속 진행하였다.
profile
백엔드 개발자가 되자!

0개의 댓글

관련 채용 정보