우당탕탕 개발일지
[SWEA] 1979. 어디에 단어가 들어갈 수 있을까(Java, D2) 본문
문제
N * N 퍼즐 모양에서 특정 길이 K를 갖는 단어가 들어갈 수 있는 자리의 수를 출력하는 프로그램
그림과 같은 5 * 5 퍼즐 모양이 있다고 가정한다.
K = 3 일 때, 자리는 2가지( 1번 가로, 4번 가로 ) 경우이다.
퍼즐의 모양은 2차원 배열로 제공된다.
이때 흰색 부분은 1, 검은색 부분은 0
입출력 예
풀이
먼저, 연속된 흰색 칸의 개수와 k 값과 동일해야 한다.
1이 몇번이나 반복하는지 알기 위해서는 2가지로 판별한다.
1. 0이 나오기 전까지 1이 몇번 연속되는지
2. 마지막 인덱스가 1이며 1이 몇번 연속했는지
또한, 0이 나올 경우에는 1이 연속되는 값을 초기화 하여 1이 나올 부분을 위해 대기한다.
1. 가로
[ 첫번째 if문 ]
1인지 확인 후, 연속된 횟수를 저장한다.
[ 두번째 if문 ]
해당 인덱스가 0 혹은 마지막 인덱스인지 확인한다.
>> 해당 부분이 위에서 설명한 2가지의 경우 수
연속된 횟수와 k 값이 동일한 경우, 결과 값에 +1를 한다.
그 후, 연속된 횟수를 저장하는 countRow를 초기화 한다.
>> 해당 index가 0 혹은 마지막이기에 다음 1에 대한 횟수를 저장하기 위해 초기화 진행
2. 세로
1. 가로와 코드가 비슷하지만 a,b 순서가 바뀌어 있다.
세로 비교를 위해서 b가 한칸씩 내려가야 하기에 변경되어 있다.
또한, 다른 값을 비교하기에 countRow가 아닌 countColumn이라는 변수를 사용한다.
해당 로직은 1.가로와 동일함으로 같은 의미를 지니고 있다.
코드
SWEA 문제
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PuPq6AaQDFAUq
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
'코테 > SW Expert Academy' 카테고리의 다른 글
[SWEA] 14178. 1차원 정원(Java, D3) (0) | 2024.05.13 |
---|---|
[SWEA] 1983. 조교의 성적 매기기(Java, D2) (0) | 2024.04.29 |
[SWEA] 1989. 초심자의 회문 검사(Java, D2) (0) | 2024.04.29 |
[SWEA] 1926. 간단한 369게임(Java, D2) (0) | 2024.04.25 |
[SWEA] 1859. 백만 장자 프로젝트(Java, D2) (0) | 2024.04.25 |