16. 문자열 나누기
2024. 7. 12. 17:13
프로그래머스/Lv. 1
def solution(s): answer = 0 slist = list(s) standard = slist[0] neg = 0 pos = 0 while slist: letter = slist.pop(0) if letter == standard: pos += 1 else: neg += 1 if pos == neg: if slist: standard = slist[0] answer += 1 pos = 0 neg = 0 if pos != neg: answer += ..
15. 하노이 탑 ★
2024. 7. 12. 01:45
프로그래머스/Lv. 1
유명한 재귀 문제.유형 : recursion def hanoi(n, dep, by, des): if n == 1: return [[dep, des]] res = hanoi(n-1, dep, des, by)+ [[dep, des]] + hanoi(n-1, by, dep, des) return resdef solution(n): answer = hanoi(n, 1, 2, 3) return answer 하 근데 리스트 처리 때문에 애 좀 먹었다...파이썬 리스트에 더 익숙해져야 할 것 같다.
14. 바탕화면 정리
2024. 7. 12. 01:21
프로그래머스/Lv. 1
def solution(wallpaper): answer = [] walllist = [list(wallpaper[i]) for i in range(len(wallpaper))] xidx = len(walllist) yidx = len(walllist[0]) xlist = [] ylist = [] for i in range(xidx): for j in range(yidx): if walllist[i][j] == "#": xlist.append(i) ylist.append(j) answer = [min(xlist), min(ylist), max(xlist)+1, max(y..
13. 공원 산책 ★
2024. 7. 12. 01:08
프로그래머스/Lv. 1
def solution(park, routes): answer = [] park_list = [list(park[i]) for i in range(len(park))] dirc_dict = dict([['N', 0], ['S', 1], ['W', 2], ['E', 3]]) dx = [0, 0, -1, 1] dy = [-1, 1, 0, 0] W = len(park_list[0]) H = len(park_list) X = 0 Y = 0 for i in range (H): for j in range (W): if park_list[i][j] == "S": Y = i X =..
12. 추억 점수
2024. 7. 12. 00:17
프로그래머스/Lv. 1
def solution(name, yearning, photo): answer = [] yeardict = dict([[name[i], yearning[i]] for i in range(len(name))]) for ph in photo: phans = 0 for people in ph: if people in name: phans += yeardict[people] answer.append(phans) return answer 유형 : 구현. 앞선 문제와 같이 dict 자료형을 이용해 풀이했다. yeardict를 사용하여 쉽게 추억 점수를 찾을 수 있다.단 dict에서 key 값이 존재하지 않는 ..
11. 달리기 경주 ★ (dictionary 자료형 사용해 index 찾기)
2024. 7. 12. 00:12
프로그래머스/Lv. 1
유형 : 구현하하... def solution(players, callings): answer = players for call in callings: idx = players.index(call) temp = players.pop(idx) temp = players.pop(idx-1) players.insert(idx-1, call) players.insert(idx, temp) return answer 이렇게 단순히 list로 풀 경우... index, pop, insert 함수들은 O(n) 시간 복잡도이기 떄문에 시간 초과가 난다. 따라서 빠르게 key를 찾을 수 있는 dict를 사용해야 한다. def solution(..
10. 데이터 분석 ★ (이차원 배열의 정렬 key)
2024. 7. 11. 23:50
프로그래머스/Lv. 1
def solution(data, ext, val_ext, sort_by): answer = [] val = ["code", "date", "maximum", "remain"] excode = val.index(ext) sortcode = val.index(sort_by) for d in data: if d[excode] 유형 : 구현풀이 시간: 약 30분 answer에 append까지는 쉬웠는데,이차원배열 정렬에서 조금 애먹었다. 익명함수 lambda를 이용하면 쉽게 정렬할 key를 지정할 수 있다. answer.sort(key = lambda x:x[sortcode])
9. 이웃한 칸 ★
2024. 7. 11. 23:35
프로그래머스/Lv. 1
def solution(board, h, w): answer = 0 n = len(board) dh = [0, 1, -1, 0] dw = [1, 0, 0, -1] for i in range(4): h_check = h + dh[i] w_check = w + dw[i] if h_check >= 0 and h_check = 0 and w_check 유형 : 구현풀이 시간 : 10분 이 문제는 굉장히 쉬운 문제였지만, if h_check >= 0 and h_check = 0 and w_check 이 부분에서 처음에 h_check만 체크해서 틀렸다.제발 이런 부분 놓치지 말고 꼼꼼히 살펴보자. 그리고 구현 시에, 스스로 힘으로 디버깅하기. 이번..