반응형
1. 문제
N X N 크기의 단어 퍼즐을 만들려고 한다. 입력으로 단어 퍼즐의 모양이 주어진다.
주어진 퍼즐 모양에서 특정 길이 K를 갖는 단어가 들어갈 수 있는 자리의 수를 출력하는 프로그램을 작성하라.
[예제]
N = 5, K = 3 이고, 퍼즐의 모양이 아래 그림과 같이 주어졌을 때
길이가 3 인 단어가 들어갈 수 있는 자리는 2 곳(가로 1번, 가로 4번)이 된다.
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PuPq6AaQDFAUq
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
2. My 코드
import java.util.Scanner;
import java.io.FileInputStream;
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
//1. 첫 줄에 총 테스트 케이스의 개수 T
int T =sc.nextInt();
for(int test=1;test<T+1;test++) {
//2. N X N 크기의 단어 퍼즐을 만들려고 한다.
int N = sc.nextInt();
int[][] puzzle = new int[N][N];
//3. 특정 길이 K를 갖는 단어
int K = sc.nextInt();
//4. 퍼즐의 각 셀 중, 흰색 부분은 1, 검은색 부분은 0 으로 주어진다.
for(int i=0;i<N;i++) {
for(int j=0;j<N;j++) {
puzzle[i][j]=sc.nextInt();
}
}
//5.구현
//1이 나오면 one++ -> 3이되면 count++
//0이 나오면 one=0으로 초기화
int count=0;
//가로 체크
for(int i=0;i<N;i++) {
int one=0;
for(int j=0;j<N;j++) {
if(puzzle[i][j]==1) {
one++;
if(one==K) {
count++;
}
if(one>K) {
count--;
one=0;
}
}else {
one=0;
}
}
}
//세로 체크
for(int i=0;i<N;i++) {
int one=0;
for(int j=0;j<N;j++) {
if(puzzle[j][i]==1) {
one++;
if(one==K) {
count++;
}
if(one>K) {
count--;
one=0;
}
}else {
one=0;
}
}
}
//결과
System.out.println("#"+test+" "+count);
}//test end
}
}
반응형
'알고리즘 > SWEA' 카테고리의 다른 글
[부분집합] SWEA 5215번 햄버거 다이어트 - JAVA (0) | 2023.04.06 |
---|---|
1210. Ladder1 (0) | 2023.02.15 |
14178. 1차원 정원 (0) | 2023.02.14 |
1983. 조교의 성적 매기기 (0) | 2023.02.14 |
7272. 안경이 없어! (0) | 2023.02.14 |