Categories: SWEA

SWEA 1979 어디에 단어가 들어갈 수 있을까 D2 (자바 Java)

SWEA 1979 어디에 단어가 들어갈 수 있을까

문제 정보

  • 문제 출처 : SW Expert Academy
  • 문제 번호 : 1979
  • 문제 제목 : 어디에 단어가 들어갈 수 있을까
  • 문제 난이도 : D2
  • 풀이 언어 : Java

문제

N X N 크기의 단어 퍼즐을 만들려고 한다. 입력으로 단어 퍼즐의 모양이 주어진다. 주어진 퍼즐 모양에서 특정 길이 K를 갖는 단어가 들어갈 수 있는 자리의 수를 출력하는 문제

접근

반복문과 조건문을 활용해 문제를 풀었다.

풀이

  • 각 테스트 케이스마다 격자의 크기 N과 단어의 길이 K를 입력 받는다.
  • 격자는 0(막힌 칸)과 1(빈 칸)으로 초기화 된다.
  • 각 행을 왼쪽에서 오른쪽으로 스캔한다.
  • 셀의 값이 1이면 연속된 칸의 수를 증가시킨다.
  • 0(막힌 칸)을 만나면 consecutive의 값이 K와 같은지 확인하여 단어 공간으로 카운트하고 초기화한다.
  • 각 열을 위에서 아래로 스캔한다.
  • 행과 동일한 방식으로 열에서도 연속된 빈칸의 길이를 확인한다.
  • 결과를 출력한다.

후기

어렵지 않게 해결한 문제

코드

Java
import java.util.Scanner;
import java.io.FileInputStream;
 
class Solution
{
    public static void main(String args[]) throws Exception
    {
        Scanner sc = new Scanner(System.in);
        int T;
        T=sc.nextInt();
         
        for(int test_case = 1; test_case <= T; test_case++)
        {
            int N = sc.nextInt();
            int K = sc.nextInt();
            int[][] grid = new int[N][N];
 
            for (int i = 0; i < N; i++) {
                for (int j = 0; j < N; j++) {
                    grid[i][j] = sc.nextInt();
                }
            }
 
            int count = 0;
 
            for (int i = 0; i < N; i++) {
                int consecutive = 0;
                for (int j = 0; j < N; j++) {
                    if (grid[i][j] == 1) {
                        consecutive++;
                    } else {
                        if (consecutive == K) count++;
                        consecutive = 0;
                    }
                }
                if (consecutive == K) count++;
            }
 
            for (int j = 0; j < N; j++) {
                int consecutive = 0;
                for (int i = 0; i < N; i++) {
                    if (grid[i][j] == 1) {
                        consecutive++;
                    } else {
                        if (consecutive == K) count++;
                        consecutive = 0;
                    }
                }
                if (consecutive == K) count++;
            }
 
            System.out.printf("#%d %d\n", test_case, count);
        }
    }
}
Java
suover

Recent Posts

Java 자바 Enum 열거형 사용법

Enum이란? Enum은 "enumeration"의 줄임말로, 특정 값들의 집합을 정의할 수 있는 특별한 클래스입니다. 예를 들어, 요일,…

3주 ago

Java 자바 래퍼 클래스(Wrapper Class)란? 래퍼 클래스의 필요성

래퍼 클래스(Wrapper Class)란? 자바에서 래퍼 클래스는 기본 데이터 타입(Primitive Data Type)을 객체(Object)로 감싸는 클래스입니다. 자바의…

3주 ago

Java 자바 StringBuilder 개념 및 특징 주요 메소드

서론 Java에서 문자열을 다룰 때, 문자열의 변경이 빈번하게 발생하는 경우라면 StringBuilder 클래스를 사용하는 것이 매우…

4주 ago

웹 개발 FitOn 팀 프로젝트 회고

서론 현대인들은 점점 더 운동과 건강에 대한 관심을 가지고 있으며, 이를 체계적으로 관리하고 공유할 수…

1개월 ago

Java 자바 String 클래스 특징 및 메소드

String 클래스란? 자바에서 String 클래스는 가장 널리 사용되는 클래스 중 하나입니다. 문자열 시퀀스를 나타내며, 문자열을…

2개월 ago

Java 자바 불변 객체(Immutable Object) 개념 정리

불변 객체란? 불변 객체(Immutable Object)는 생성된 이후 그 상태를 변경할 수 없는 객체를 의미합니다. 불변…

2개월 ago