"SWEA 1979 어디에 단어가 들어갈 수 있을까"의 두 판 사이의 차이

잔글 (봇: 자동으로 텍스트 교체 (-</source> +</syntaxhighlight>, -<source +<syntaxhighlight ))
 
1번째 줄: 1번째 줄:
==개요==
==개요==
;SWEA 1979 어디에 단어가 들어갈 수 있을까
{{SWEA|난이도=2}}
* https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=
 
{{SWEA 헤더}}
{{SWEA 난이도 2-1}}
|}


==C++==
==C++==

2023년 8월 25일 (금) 01:45 기준 최신판

1 개요[ | ]

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

2 C++[ | ]

#include <iostream>
using namespace std;
int T;
int N, K;
int a[15][15];
bool isVfit(int r, int c) {
	if( r>0 && a[r-1][c] == 1 ) return false;
	if( r+K<N && a[r+K][c] == 1 ) return false;
	for(int i=0; i<K; i++) {
		if( a[r+i][c] != 1 ) return false;
	}
	return true;
}
bool isHfit(int r, int c) {
	if( c>0 && a[r][c-1] == 1 ) return false;
	if( c+K<N && a[r][c+K] == 1 ) return false;
	for(int i=0; i<K; i++) {
		if( a[r][c+i] != 1 ) return false;
	}
	return true;
}
int main() {
	scanf("%d", &T);
	for(int tc=1; tc<=T; tc++) {
		scanf("%d %d", &N, &K);
		for(int i=0; i<N; i++) {
			for(int j=0; j<N; j++) scanf("%d", &a[i][j]);
		}
		int count = 0;
		for(int i=0; i<N; i++) {
			for(int j=0; j<N; j++) {
				if(i+K<=N && isVfit(i,j)) count++;
				if(j+K<=N && isHfit(i,j)) count++;
			}
		}
		printf("#%d %d\n", tc, count);
	}
}

3 Java[ | ]

import java.util.Scanner;
public class Solution {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int i, j, l, T = sc.nextInt();
        for(int t=1; t<=T; t++) {
            int n = sc.nextInt();
            int k = sc.nextInt();
            int a[][] = new int[n][n];
            for(i=0; i<n; i++) {
                for(j=0; j<n; j++) {
                    a[i][j] = sc.nextInt();
                }
            }

            int count = 0;
            // horizontal
            for(i=0; i<n; i++) {
                outerloop:
                for(j=0; j<=n-k; j++) {
                    if( j != 0 && a[i][j-1] == 1 ) continue;
                    if( j+k != n && a[i][j+k] == 1 ) continue; 
                    for(l=0; l<k; l++) {
                        if( a[i][j+l] == 0 ) continue outerloop;
                    }
                    count++;
                }
            }
            // vertical
            for(i=0; i<n; i++) {
                outerloop:
                for(j=0; j<=n-k; j++) {
                    if( j != 0 && a[j-1][i] == 1 ) continue;
                    if( j+k != n && a[j+k][i] == 1 ) continue; 
                    for(l=0; l<k; l++) {
                        if( a[j+l][i] == 0 ) continue outerloop;
                    }
                    count++;
                }
            }
            System.out.format( "#%d %d\n", t, count ); 
        }
    }
}
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}