기몽수
코딩 기록일지
기몽수
전체 방문자
오늘
어제
  • 분류 전체보기 (443)
    • 알고리즘 - SWEA (210)
      • D1 (19)
      • D2 (25)
      • D3 (143)
      • D4 (21)
      • D5 (2)
    • 알고리즘 - Programmers (74)
      • Unrated (34)
      • Lv 0 (4)
      • Lv 1 (3)
      • Lv 2 (32)
      • Lv 3 (1)
    • 알고리즘 - Baekjoon (158)
      • Bronze (1)
      • Silver (65)
      • Gold (90)
      • Platinum (2)
    • 취업 (0)
    • SSAFY (1)
hELLO · Designed By 김용수.
기몽수

코딩 기록일지

알고리즘 - SWEA/D3

[SW expert Academy] SWEA 1220번 Magnetic 자바(Java)

2023. 10. 27. 16:23

[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

 

SW Expert Academy

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

swexpertacademy.com

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
    '알고리즘 - SWEA/D3' 카테고리의 다른 글
    • [SW expert Academy] SWEA 1217번 거듭 제곱 자바(Java)
    • [SW expert Academy] SWEA 1225번 암호생성기 자바(Java)
    • [SW expert Academy] SWEA 2817번 부분 수열의 합 자바(Java)
    • [SW expert Academy] SWEA 1209번 Sum 자바(Java)
    기몽수
    기몽수

    티스토리툴바