강승현입니다
    • 홈
    • 태그
    • 방명록

    카테고리

    • 전체 글 (119) N
      • 후기 (38)
        • 경험 (15)
        • SSAFY (9)
        • 코딩테스트 (3)
        • 넥스터즈 (6)
        • 회고 (5)
      • Degrees (2)
      • Tech (1) N
        • Java&Spring (13)
        • IDE (1)
        • Node.js (2)
        • Git (3)
        • Server (3)
        • DevOps (0)
        • OS (3)
        • Javascript (1)
        • C,C++ (1)
        • Python (2)
        • 알고리즘 (1)
        • 트러블슈팅 (1)
      • OnlineJudge (45)
      • 정보전달 (2)
    OnlineJudge

    Codeforces Round #691 (Div. 2) B. Move and Turn 풀이

    CODe_byCODe_·2020. 12. 20. 00:14

    문제

    문제로 이동

     

    Problem - B - Codeforces

     

    codeforces.com


    목차

      문제 설명

      전형적인 규칙 찾는 문제이다. 개인적으로 A보다 쉬웠다.

      2차원 좌표평면 가운데에서 로봇은 동, 서, 남, 북으로 1미터씩 움직일 수 있다.

      단, 한쪽 방향만으로 갈 수는 없고

      북쪽으로 한 칸 이동 했다면 그 다음엔 서, 동으로 이동

      남쪽으로 한 칸 이동 했다면 그 다음엔 서, 동으로 이동

      서쪽으로 한 칸 이동 했다면 그 다음엔 북, 남으로 이동

      동쪽으로 한 칸 이동 했다면 그 다음엔 북, 남으로 이동해야 한다.

      이 때 N 값 만큼 이동할 수 있는데, 로봇이 갈 수 있는 공간의 개수를 출력하라는 문제다.

      자세한건 예시를 보자.


      예시

      그림으로 설명하자면

      N이 1일 때 이동 반경 4

      동, 서, 남, 북으로 이동하기 때문에 결과적으로 4개의 공간에 방문 가능하다.

      다른 예를 보자.

      N이 2일 때 이동 반경 4

      또 다른 예를 보자.

      N이 3일 때 이동 반경 12

       

      참고로 나는 N=5까지 손으로 직접 그려봤다...

       




      규칙

      위 예시를 보고 규칙을 발견해야한다.

      N 출력값 식
      1 1+2+1 2*(1*2)
      2 2+2 2*2
      3 2+3+2+3+2 2*(2*3)
      4 3+3+3 3*3
      5 3+4+3+4+3+4+3 2*(3*4)

      N이 홀수인 경우

      ((n+1)//2)*((n+1)//2+1)*2

      N이 짝수인 경우

      print((n//2+1)*(n//2+1))

      소스코드

      반응형
      저작자표시 비영리 변경금지 (새창열림)
      'OnlineJudge' 카테고리의 다른 글
      • 백준 13913 숨바꼭질4 BFS
      • 백준 16236 아기상어 풀이 python, java
      • Codeforces Round #691 (Div. 2) A. Red-Blue Shuffle 풀이
      • 백준 2042 구간 합 구하기/세그먼트트리
      CODe_
      CODe_
      개발과 관련된 다양한 정보를 몰입감있게 전달합니다.
      최신 글

      티스토리툴바