[D3] [S/W 문제해결 기본] 5일차 - Magnetic - 1220
성능 요약
메모리: 109,496 KB, 시간: 329 ms, 코드길이: 1,292 Bytes
제출 일자
2023-10-27 16:16
출처: SW Expert Academy, https://swexpertacademy.com/main/code/problem/problemList.do
import java.util.Scanner;
import java.util.Stack;
class Solution
{
static int SIZE = 100;
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int T = 10;
for(int tc = 1; tc <= T; tc++)
{
sc.next();
int[][] map = new int[SIZE][SIZE];
for(int i = 0; i < SIZE; i ++){
for(int j = 0; j < SIZE; j++){
map[i][j] = sc.nextInt();
}
}
int result = check(map);
System.out.println("#" + tc + " " + result);
}
}
private static int check(int[][] map){
int result = 0;
Stack<Integer> stack = new Stack<>();
for(int i = 0; i < SIZE; i++){
stack.clear();
for(int j = 0; j < SIZE; j ++){
if(map[j][i] == 0){
continue;
}
if((stack.isEmpty() && map[j][i] == 2) || (!stack.isEmpty() && stack.peek() == map[j][i])){
continue;
}
stack.push(map[j][i]);
}
while(!stack.isEmpty() && stack.peek() == 1){
stack.pop();
}
result += (stack.size()/ 2);
}
return result;
}
}
처음에는 스택을 활용해서 풀었는데 이러한 원리를 활용하면 더 쉽게 풀 수 있다.
import java.util.Scanner;
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
for(int tc = 1; tc <= 10; tc++)
{
int N = sc.nextInt();
int[][] map = new int[N][N];
int result = 0;
for(int i = 0; i < N; i ++){
for(int j = 0; j < N; j++){
map[i][j] = sc.nextInt();
}
}
for(int i = 0; i < N; i++){
int count = 0;
for(int j = 0; j < N; j++){
if(map[j][i] == 1) count++;
if(map[j][i] == 2 && count != 0){result++;count = 0;}
}
}
System.out.println("#" + tc + " " + result);
}
}
}
'알고리즘 - SWEA > D3' 카테고리의 다른 글
[SW expert Academy] SWEA 1217번 거듭 제곱 자바(Java) (0) | 2023.10.27 |
---|---|
[SW expert Academy] SWEA 1225번 암호생성기 자바(Java) (0) | 2023.10.27 |
[SW expert Academy] SWEA 2817번 부분 수열의 합 자바(Java) (0) | 2023.10.27 |
[SW expert Academy] SWEA 1209번 Sum 자바(Java) (0) | 2023.10.26 |
[SW expert Academy] SWEA 1215번 회문1 자바(Java) (0) | 2023.10.26 |