갱스타
갱스타의 블로그
갱스타
전체 방문자
오늘
어제
  • 분류 전체보기 (93)
    • TIL(Today I Learned) (10)
    • 노력만이 살길! (58)
      • 알고리즘 (29)
      • 네트워크 (3)
      • Python (1)
      • Spring Boot (1)
      • 합격하기 (0)
      • Adsp (3)
      • SQLD (10)
      • 데이터분석 (5)
      • 취업일기 (4)
      • IT 프로젝트 관리 (1)
      • 운영체제 (1)
    • Life (10)
      • 일상 그리고 리뷰 (10)
    • 기타 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • java 알고리즘
  • 싸피합격
  • 싸피7기
  • post
  • mac 단축키
  • 알고리즘
  • 백준 알고리즘
  • 통신
  • 백준 2477번
  • 백준
  • 백준 달팽이
  • 백준 참외밭
  • 네트워크
  • 싸피
  • 달팽이 반복문
  • Get
  • SW Expert Academy
  • swea
  • 달팽이문제
  • SWEA 13038

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
갱스타

갱스타의 블로그

백준 1074 Z탐색
노력만이 살길!/알고리즘

백준 1074 Z탐색

2022. 3. 1. 00:58

https://www.acmicpc.net/problem/1074

 

1074번: Z

한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을

www.acmicpc.net

한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다.

N > 1인 경우, 배열을 크기가 2N-1 × 2N-1로 4등분 한 후에 재귀적으로 순서대로 방문한다.

다음 예는 22 × 22 크기의 배열을 방문한 순서이다.

N이 주어졌을 때, r행 c열을 몇 번째로 방문하는지 출력하는 프로그램을 작성하시오.

다음은 N=3일 때의 예이다.

입력

첫째 줄에 정수 N, r, c가 주어진다.

출력

r행 c열을 몇 번째로 방문했는지 출력한다.

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main{
    static int r;
    static int c;
       static int answer2;
    public static void main(String[] args) throws IOException {
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb=new StringBuilder();
        StringTokenizer st=null;
        st=new StringTokenizer(br.readLine());
        int N=Integer.parseInt(st.nextToken());
        r=Integer.parseInt(st.nextToken());
        c=Integer.parseInt(st.nextToken());

        //한 변의 길이는 2^N
        //만약 N이 2라면 한변의 길이는 4
        int length=(int)(Math.pow(2,N));
         recursive(0,0,length,0);
        System.out.println(answer2);

    }
    //length는 한 변의 길이....
    private static void recursive(int x, int y, int length,int number) {
        if(x==r&&y==c){
            answer2=number;
            return;
            //정답 찾음
        }
        if(!(x<=r&&r<=x+length&&y<=c&&c<=y+length)){
            return;
        }
        if(length<1){
            return;
        }
        length=length/2;
        recursive(x,y,length,number);
        recursive(x,y+length,length,number+length*length);
        recursive(x+length,y,length,number+length*length*2);
        recursive(x+length,y+length,length,number+length*length*3);

    }

}

'노력만이 살길! > 알고리즘' 카테고리의 다른 글

백준 2999번 비밀이메일  (0) 2022.03.01
백준 4485번 녹색 옷 입은 애가 젤다지?  (0) 2022.03.01
[SWEA][JAVA] 13038 교환학생  (0) 2022.03.01
[SWEA][JAVA] 2005 파스칼의 삼각형  (0) 2022.03.01
[SWEA][JAVA] 1234 비밀번호  (0) 2022.03.01
    '노력만이 살길!/알고리즘' 카테고리의 다른 글
    • 백준 2999번 비밀이메일
    • 백준 4485번 녹색 옷 입은 애가 젤다지?
    • [SWEA][JAVA] 13038 교환학생
    • [SWEA][JAVA] 2005 파스칼의 삼각형
    갱스타
    갱스타
    열심히 배워보자

    티스토리툴바