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 |
댓글