이노베이션 캠프
[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 함수 미리 추상적으로 역할을 정해 놓고 잘 사용할 수 있게 로직 짜기