• 티스토리 홈
  • 프로필사진
    2료일
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
2료일
  • 프로필사진
    2료일
    • 분류 전체보기 (118)
      • SWIFT개발 (29)
      • 알고리즘 (25)
      • Design (6)
      • ARkit (1)
      • 면접준비 (32)
      • UIkit (2)
      • Vapor-Server with swift (3)
      • 디자인패턴 (5)
      • 반응형프로그래밍 (12)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • 알고리즘 with Swift (7569 tomaoto)
        2023년 04월 12일
        • 2료일
        • 작성자
        • 2023.04.12.:42

        알고리즘 스터디가 드디어 두둥 열렸기에 빠질수 없어 보자마자 참여.

        첫 문제로는 토마토 문제. 

        어디선가 봤던 유형인데 알고리즘을 안푼지가 백만년이라 역시나 감도 안온다....

        일단 읽으면 어? 근처에 있으면 옮아? 옮고 또 그것은 다른것에 영향을 끼친다고?라고 생각하니까 이건 무조건 BFS로 해야겠다를 먼저띵킹

        1. 1트 ( 시간초과)

        1

        임시 샘플들을 넣으면 결과값이 제대로 나오지만 시간초과가 뜬다. 왜지? 

        내가 생각한 풀이는 처음에 1인 지점에서 위,아래, 왼.오. 앞,뒤 로 전염이 되기에 먼저 위아래를 제외한것들을 먼저 전염시키고 그 두 if문에서 row가 N만큼 더 가서 그 지점도 0이라면 감염시키고 큐에 넣어주는 형식으로 구현하였다.

        찾아보니 removefirst는 시간복잡도가 O(n)이라 생기는 문제였다. 그래서 index라고 포인터를 만들어 +1 해가며 다음걸로 가는 형식으로 짯는데 테스트 예제들은 모두 통과를 하였으나 채점결과 틀.렸.습니다가 떠버림..아놔 그래서 반례를 찾기시작.

        하지만 다른 반례들도 다 정답이 뜨는데 뭐가 문제읹지 모르겠음.

        아 찾응. 저 위에 사진으로 2번 인덱스에서 만약 감염이 이루어지면 3번 인덱스도 전염이 이어진다. 하지만 구조상 우리는 왼, 오, 앞, 뒤, 위, 아래만 가능해야하기에 오류가 뜬 것이였다.(룸메이트가 도와줌)

        가독성도 구리다는 피드백을 받아서 바로 3차배열로 짜기시작.

        그래서 나온 결과물!! 이번에는 통과를 하였다.

        box를 삼차배열로 만들고 첫번째에는 위층 아래층을 구분해주고 그 뒤는 같게 진행을 하였다. 그러다 보니 위 코드랑 달리 N*h등 임의로 구해줄 필요가 없어 코드가 훨씬 짧아지고 마지막은 마찬가지로 flatMap을 써서 일차배열로 바꾼뒤 구해주었다. 3차배열쓰기 싫어서 다른 방법을 사용해봤지만 돌고돌아 삼차

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

        티스토리툴바