ji_iin
iOSLog
ji_iin
전체 방문자
오늘
어제
  • 분류 전체보기 (56)
    • Swift (8)
    • iOS (6)
    • 알고리즘 (34)
    • CS (3)
    • 회고 (3)
    • 제품리뷰 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • django
  • 깊이우선탐색
  • 알고리즘개념
  • 백준
  • 자바
  • Bye2023
  • 백트래킹
  • ios
  • 구조체와 클래스
  • 그래프이론
  • 알고리즘
  • 대기업코테
  • 브루트포스 알고리즘
  • 수학
  • 회고
  • SWiFT
  • Python
  • opional
  • 개발회고
  • swiftUI
  • 공식문서
  • 재귀
  • 2022년 회고
  • 다이나믹 프로그래밍
  • 그래프탐색
  • 파이썬
  • 프로그래머스
  • 너비우선탐색
  • 깊은복사와 얕은복사
  • 정렬

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ji_iin

iOSLog

알고리즘

[JAVA] 백준 1245 - 농장 관리

2021. 7. 26. 21:12

문제

1245번: 농장 관리

[ 문제 조건 ]

  • 인접한 격자 8개를 모두 비교할 dx, dy 배열
  • 산봉우리 높이 > 산봉우리 인접한 격자의 높이
  • 산봉우리 총 갯수 = count
  • 해당 값이 산봉우리 인지 아닌지 여부 = top

[ 해결순서 ]

  1. 문제에서의 '인접하다' 정의를 먼저 이해해야한다. X, Y 좌표 차이가 1이하인 값인 인접한 값. 대각선 4군데 상하좌우 총 8개의 값을 비교하여 깊이우선탐색을 진행해야한다.
  2. 모든 farm 배열을 확인하여 방문하지 않은 값 중 0이 아닌 산봉우리가 될 수 있는 값들을 기준으로 dfs() 를 실행하는데
  3. 그 전에, 해당 값이 산봉우리라고 임의로 지정해두고 깊이우선탐색 실행 후에도 해당 값이 제일 높으면 그 때 총 값을 증가시킨다.
  4. 기존의 깊이우선탐색을 진행하는 방식처럼 dfs() 메소드를 작성하는데
    1. 기준 값이 인접한 값보다 작으면 즉, 높이가 더 큰 산봉우리가 있다면 그 값은 산봉우리가 될 수 없으므로 재귀적으로 너비우선탐색 할 필요도 없다.
    2. 방문하지 않은 값 중에 높이가 같은 값이 있다면 그 값을 기준으로 너비우선탐색을 실행하여 산봉우리를 찾는다.
  5. 최종 총 값을 출력한다.

✏️한줄평

처음에 문제를 잘못 이해해서 산봉우리가 여러개인데 왜 하나로 취급하지? 하는 의문이 들었는데, 그냥 같은 높이의 산봉우리라면 하나의 산봉우리 인 것이다. 뭔가 문제의 조건이 애매하다는 느낌은 나만 드는건가. 조금 헷갈렸다. 조건을 같은 높이라면 하나의 산봉우리로 취급한다는 문장이 있으면 좀 명확할 것 같다는 생각이든다. 기존 깊이우선탐색 문제의 응용버전이다.


코드

'알고리즘' 카테고리의 다른 글

[Python] 백준 9020번 - 골드바흐의 추측  (0) 2021.08.06
[Python] 백준 11052번 - 카드 구매하기  (0) 2021.08.06
[JAVA] 백준 11057 - 오르막 수  (0) 2021.07.25
[JAVA] 백준 7569번 - 토마토  (0) 2021.07.25
[JAVA] 백준 1991번 - 트리순회  (0) 2021.07.19
    '알고리즘' 카테고리의 다른 글
    • [Python] 백준 9020번 - 골드바흐의 추측
    • [Python] 백준 11052번 - 카드 구매하기
    • [JAVA] 백준 11057 - 오르막 수
    • [JAVA] 백준 7569번 - 토마토
    ji_iin
    ji_iin
    개발성장일지🐥

    티스토리툴바