💪🏻 프로그래머스 코드리뷰 스터디가 2주차가 되었다.👏🏻👏🏻👏🏻
리뷰를 통해 알려주신 내용들 덕분에 자료구조를 선택할 수 있는 폭이 넓어진 것 같다.
그리고 코드도 상당히 깔끔해진 느낌을 받았다. 물론 단순히 ㅎㅎ 오퍼레이터 사이를 띄었다 안띄었다 하던걸 신경써서 일지도 모르겠지만 아무튼! if를 정리하는건 아직 어렵다.
이번 주 주제는 Stack과 Hash 였는데 "사전순 부분문자열" 문제가 너무 어려웠다. 이 문제가 너무 어려워서 모의고사가 걱정됐는데 오히려 모의고사는 너무 쉬웠다. 덕분에 Stack 문제에 취약하다는 것을 깨달았다. 백준에서 비슷한 유형의 문제를 많이 연습해봐야겠다.😂
스터디에서 풀었던 문제들은 잊어버릴 때 쯤 복습하면서 정리하려고 한다. :)
처음 풀었던 코드와 다시 풀었을 때 코드를 비교해봐야겠다 ㅎㅎ
return int(stack == [])
요게 너무 인상깊어서 모의고사 풀 때 써먹었다.def check_bingo(board, nums):
length = len(board)
bingo = 0
for y in range(length):
count = 0
for x in range(length):
try:
if nums[board[y][x]] == 1:
count += 1
except:
pass
if count == length:
bingo += 1
return bingo
def check_diagonal_bingo(board, nums):
length = len(board)
count = 0
bingo = 0
for y in range(length):
for x in range(length):
try:
if y == x and nums[board[y][x]] == 1:
count += 1
except:
pass
if count == length:
bingo += 1
return bingo
def solution(board, nums):
nums = {k:1 for k in nums}
# 가로 체크
bingo = check_bingo(board, nums)
# 세로 체크
board = list(map(list, zip(*board)))
bingo += check_bingo(board, nums)
# 대각선
bingo += check_diagonal_bingo(board, nums)
bingo += check_diagonal_bingo(board[::-1], nums)
return bingo
def check_bingo(board, nums):
length = len(board)
bingo = 0
for y in range(length):
count = 0
for x in range(length):
if board[y][x] in nums:
count += 1
if count == length:
bingo += 1
return bingo
def check_diagonal_bingo(board, nums):
length = len(board)
count = 0
bingo = 0
for y in range(length):
if board[y][y] in nums:
count += 1
if count == length:
bingo += 1
return bingo
def solution(board, nums):
nums = set(nums)
# 가로 체크
bingo = check_bingo(board, nums)
# 세로 체크
board = list(map(list, zip(*board)))
bingo += check_bingo(board, nums)
# 대각선
bingo += check_diagonal_bingo(board, nums)
bingo += check_diagonal_bingo(board[::-1], nums)
return bingo
딕셔너리를 사용해서 keyError 날까봐 try ~ except 사용했던 부분을 set으로 바꿔서 너무 간결하게 바뀌었다😆 이번 주 제일 맘에 드는 코드 ㅎㅎ