일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Spotify Api
- 자바
- SECS-II
- Computer Science
- Gem
- 회원가입
- CS
- spring boot
- programmers
- SECS
- SW Expert Academy
- Spring JPA
- Baekjoon
- SWEA
- modern c++
- Spring
- 스포티파이
- SECS/GEM
- spotify
- 회귀
- 프로그래머스
- MYSQL
- 파이썬
- linux
- regression
- 백준
- python
- c
- C++
- java
Archives
- Today
- Total
비버놀로지
[BAEKJOON 백준] 1074 Z 본문
728x90
https://www.acmicpc.net/problem/1074
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);
}
}
}
}
728x90
'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