본문 바로가기
Problem Solving/SWEA

SWEA-1220 Magnetic

by 채니_ 2021. 2. 13.

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14hwZqABsCFAYD

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


문제를 꼼꼼히 읽고 알고리즘을 짜야한다는 것을 다시 한번 느끼게 해준문제

열 우선 순회하다 N극을 만난경우 flag=true

N극을 만났고 S극을 만날경우 flag 초기화 & cnt++

열 우선 순회가 끝나면 flag를 초기화



import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Scanner;
import java.util.StringTokenizer;
//SWEA-마그네틱
//1: N 빨강 2:S 파랑
public class Solution1 {
	
	public static void main(String[] args) throws IOException {
		System.setIn(new FileInputStream("input/mag.txt"));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		
//		Scanner sc = new Scanner(System.in);
		for (int tc = 1; tc <=10; tc++) {
			StringTokenizer st = new StringTokenizer(br.readLine()," ");
			int NUM= Integer.parseInt(st.nextToken());
			
			int [][] map = new int[100][100];//배열의 크기는 무조건 100 100
			for (int i = 0; i < 100; i++) {//입력받음
				st = new StringTokenizer(br.readLine()," ");
				for (int j = 0; j < 100; j++) {
					map[i][j]= Integer.parseInt(st.nextToken());
				}
			}
			boolean flag = false;
			int cnt=0;
			for (int j = 0; j < 100; j++) {//열우선 순회
				for (int i = 0; i < 100; i++) {
					if(map[i][j]==0) continue; //가지치기
					if(map[i][j]==1) {//만약 빨간색을 만났다면 flag를 true
						flag = true;
					}
					if(flag && map[i][j]==2 ) {//빨간색을 만난 상태에서 파란색을 만났다면
							flag = false;//flag를 초기화
							cnt++;	//카운트+1 해줌	
					}
				
				}
				flag = false;//한줄이 끝나면 flag를 초기화
			}
			
			System.out.printf("#%d %d\n", tc, cnt);
		}
		
		
	}

}

0일때는 continue해줌으로써 실행시간 최소화 //가지치기

'Problem Solving > SWEA' 카테고리의 다른 글

SWEA-3234 준환이의 양팔저울  (0) 2021.02.21
SWEA- 6808 규영이와 인영이의 카드게임  (0) 2021.02.15
SWEA- 9229 한빈이와 Spot Mart  (0) 2021.02.08
SWEA- 1233 계산기 2  (0) 2021.02.07
SWEA -1861 정사각형 방  (0) 2021.02.07

댓글