• 티스토리 홈
  • 프로필사진
    홀쑥
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
홀쑥
  • 프로필사진
    홀쑥
    • 분류 전체보기 (57)
      • Language & Framework (14)
        • Java (1)
        • Python (13)
      • DataBase (4)
        • NoSQL (1)
        • RDBMS (3)
      • Big Data & Ecosystem (9)
        • Hadoop (5)
        • Hive (2)
        • Sqoop (1)
        • Zeppelin (1)
      • Data Engineering (1)
        • Airflow (1)
      • Cloud & DevOps (1)
        • AWS (0)
        • GCP (1)
      • Monitoring & Logging (2)
        • ElasticSearch (2)
      • Infrastructure (12)
        • OS (12)
        • Docker (0)
        • Kubernetes (0)
      • Algorithm & CS (7)
        • 백준 알고리즘 (6)
      • Troubleshooting (5)
        • 오류 모음 (5)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [백준 알고리즘] 1193번 분수찾기 Java
        2020년 06월 15일
        • 홀쑥
        • 작성자
        • 2020.06.15.:22

        분수들을 1/1 -> 1/2 -> 2/1 -> 3/1 -> 2/2 -> 1/3 -> ... 과 같이 지그재그 순서로 차례대로 1~..번 분수라고 한다.

         x가 주어졌을 때 x번째 분수를 구하란다.

        일단 저 표대로 보려니까 너무 어려워서 그림을 돌려봤다.

        피라미드처럼 본다고 그리고 볼 수 있다고 생각하자.

        첫번째 라인은      1/1

        두번째 라인은   2/1 1/2

        세번째 라인은 3/1 2/2 1/3

        ...

        순서는   1

                  3 2 

                 4 5 6 .. 이다

        여기서 발견한 규칙은

        짝수 행은 오른쪽에서 왼쪽, 홀수 행은 왼쪽에서 오른쪽으로 순서가 커지고

        행 번호 + 1 = 분모 + 분자,

        행의 번호와 그 행의 분수의 숫자는 같다.

        a : 원하는 분수 번호

        cnt : 개수

        n : 행 번호

        n에 1씩 더할 때 마다 cnt에 n을 더하고 만약 cnt가 a보다 커질 경우(그 행에 원하는 번호 분수가 있을 경우)

        짝수 행이라면 오른쪽에서 왼쪽으로 가니 분모는 cnt - a + 1 분자는 a - cnt + n

        홀수 행이라면 왼쪽에서 오른쪽으로 가니 분모와 분자를 반대로 주면 된다. 코드는

        import java.util.Scanner;
        public class back1193 {
        	public static void main(String[] args) {
        		Scanner sc = new Scanner(System.in);
        		int a = sc.nextInt();
        		int cnt = 0;
        		int n = 0;
        		while (true) {
        			n++;
        			cnt +=n;
        			if(cnt>=a) {
        				if(n%2==0) {
        					System.out.println(a-cnt+n+"/"+(cnt-a+1));
        				}else {
        					System.out.println((cnt-a+1)+"/"+(a-cnt+n));
        				}
        				break;
        			}
        		}
        	}
        }

        이렇게 작성하였다.

        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바