이노베이션 캠프

[TIL] 5일차

hjkim0502 2022. 8. 6. 00:05

1. JAVA

  • 우려하던 대로 파이썬에 너무 익숙해져 있어서 코테 문제 푸는데는 너무 별로인 것 같다
  • 자료형이 너무 세분화 되어있고, 당연히 그에 따른 메소드도 많은데, 기능은 훨씬 적은듯 싶다
  • 그래도 자바에 더 익숙해지는 것에는 도움이 되지 않을까 싶고, 코테는 따로 파이썬으로 공부하려 한다
  • 타의 반으로 달리기반에 들어오신 분들이 두 분 계셔서 좀 얼탔는데, 앞으로 방법을 잘 생각해봐야겠다
  • 내 풀이 코드 설명하는 것을 좀 더 듣는 입장에서 이해가 잘 가도록 하고 싶다

2. IntelliJ

  • 깃헙과 연동하는 방법 다시 한번 복습
    • share project on github -> 프로젝트 폴더 우클릭 후 깃 선택한 후 commit directory
  • 프로젝트 시작 세팅 복습: JDK 연결 -> src 안에 클래스 생성 후 메인 메소드
  • JDK 18 -> 17로 내리니 한글 깨짐 해결

3. 파이썬 dfs 복습 (릿코드)

 

200번

class Solution:
    def numIslands(self, grid: List[List[str]]) -> int:
        def dfs(i, j):
            # 더 이상 땅이 아닌 경우 종료
            if i < 0 or i >= len(grid) or \
                    j < 0 or j >= len(grid[0]) or \
                    grid[i][j] != '1':
                return

            grid[i][j] = 0

            # 동서남북 탐색
            dfs(i + 1, j)
            dfs(i - 1, j)
            dfs(i, j + 1)
            dfs(i, j - 1)

        count = 0
        for i in range(len(grid)):
            for j in range(len(grid[0])):
                if grid[i][j] == '1':
                    dfs(i, j)
                    # 모든 육지 탐색 후 카운트 1 증가
                    count += 1
        return count

 

17번

class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        def dfs(index, path):
            # 끝까지 탐색하면 백트래킹
            if len(path) == len(digits):
                result.append(path)
                return

            # 입력값 자릿수 단위 반복
            for i in range(index, len(digits)):
                # 숫자에 해당하는 모든 문자열 반복
                for j in dic[digits[i]]:
                    dfs(i + 1, path + j)

        # 예외 처리
        if not digits:
            return []

        dic = {"2": "abc", "3": "def", "4": "ghi", "5": "jkl",
               "6": "mno", "7": "pqrs", "8": "tuv", "9": "wxyz"}
        result = []
        dfs(0, "")

        return result
  • dfs 함수 미리 추상적으로 역할을 정해 놓고 잘 사용할 수 있게 로직 짜기