일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- python
- Spring JPA
- 회원가입
- C++
- Baekjoon
- coins
- spring boot
- Investing
- 암호화폐투자
- Digital Marketing
- SECS/GEM
- 자바
- Spring
- java
- finance & economics
- Computer Science
- 비트코인
- Cars
- 백준
- c
- SECS-II
- ai이미지변환
- 지브리필터
- 파이썬
- CS
- modern c++
- 프로그래머스
- programmers
- Gem
- SECS
Archives
- Today
- Total
비버놀로지
[BAEKJOON 백준] 1074 Z 본문
반응형
https://www.acmicpc.net/problem/1074
1074번: Z
한수는 2차원 배열 (항상 2^N * 2^N 크기이다)을 Z모양으로 탐색하려고 한다. 예를 들어, 2*2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. 만약, 2차원 ��
www.acmicpc.net
Z 모양으로 순회하는 순서를 알아내는 문제입니다.
재귀를 이용하여 문제를 해결해야하는 문제입니다.
import java.util.Scanner;
public class Main {
static int N,R,C;
public static void main(String[] args) {
Scanner sc=new Scanner(System.in); //스캐너를 이용해 입력을 받아 줍니다.
int n=sc.nextInt();
N=(int) Math.pow(2,n);
R=sc.nextInt(); //찾아야할 ROW 값
C=sc.nextInt(); //찾아야할 COL 값
solve(0,0,N); //메서드 호출
}
static int count;
static boolean find;
private static void solve(int row,int col,int size) {
// TODO Auto-generated method stub
if(size==2) { //배열의 크기가 2가 됬을때 R과 C가 있는지 찾아 줍니다.
for(int i=row;i<row+2;i++) {
for(int j=col;j<col+2;j++) {
if(i==R&&j==C) { //배열안에서 찾았을 경우 find를 통해 찾았음을 알려줍니다.
find=true;
System.out.println(count);
return;
}
count++;
}
}
return;
}
int newsize=size/2;
for(int i=0;i<2;i++) { //배열의 크기를 반으로 나누고, 재귀를 이용해 배열의 크기가 2가될때까지 나눠줍니다.
for(int j=0;j<2;j++) {
if(find) return; //만약에 찾았다면 재귀를 실행하지 않습니다.
solve(row+newsize*i,col+newsize*j,newsize);
}
}
}
}
반응형
'ALGORITM > JAVA' 카테고리의 다른 글
[SWEA SW Expert Academy] 1249 보급로 (0) | 2020.12.01 |
---|---|
[SWEA SW Expert Academy] 4013 특이한 자석 (0) | 2020.12.01 |
[BAEKJOON 백준] 17406 배열돌리기 4 (0) | 2020.08.31 |
[BAEKJOON 백준] 1992 쿼드트리 (0) | 2020.08.30 |
[BAEKJOON 백준] 15686 치킨 배달 (0) | 2020.08.30 |
Comments