목록알고리즘 (19)
개발계발
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Zq7UK/btsG5sHChxE/kIFMu3kAKDjWVkjtovAnd1/img.png)
문제 설명 제한사항- n은 1 이상 1,000 이하이다. 접근 방식1. 길이가 1인 것부터 n인 것까지 2차원배열을 생성2. 숫자를 채운다(숫자의 최댓값은 n * (n+1) // 2)2-1. 방향을 나눈다. 내려갈때(1,0), 오른쪽(0,1), 올라갈 때(-1,-1)3. graph를 1차원 배열로 바꿔서 return def snail_graph(graph): n = len(graph) max_value = n * (n + 1) // 2 number = 1 x, y = 0, 0 direction = "down" moves = {"down": (1, 0), "right": (0, 1), "up": (-1, -1)} graph[x][y] = number while n..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b8meyb/btsG10x5eEn/inmgZdkcIdXw0ByPyPKXw0/img.png)
이번에도 문제 설명은 생략https://school.programmers.co.kr/learn/courses/30/lessons/77485 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 접근 방식1. rows * columns 크기의 2차원 배열을 만든다.2. queries의 query를 통해 그래프를 회전시킴(함수 따로 빼기)3. 돌리면서 최소값을 갱신시켜 최소값 반환 풀이코드def rotate_graph(graph, query): x1 = query[0]-1 y1 = query[1]-1 x2 = query[2]-1 y2 = query..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b9Iomz/btsGXANc2SX/fVWbxn2dcruyGOkBEG3BFk/img.png)
문제 설명 및 제한사항은 너무 길어서 생략. 아래 링크 참조https://school.programmers.co.kr/learn/courses/30/lessons/87377 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 접근 방식 11. 아래 식을 참고해서 교점을 구해 교점을 집합에 넣는다(중복 제거를 위해 집합 사용)2. 분모가 0일 경우 예외처리를 해준다.3. x축의 길이와 y축의 길이를 구해 2중 for문의 범위를 정한다.4. 2중 for문을 돌면서 (i, j)가 교점인 경우 *을 찍고 아니면 .을 찍는다.5. answer에 append한 후 반환한다...
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/4vwVP/btsGSN550wh/DyKLTd1jJoHKZksOplRCKk/img.png)
문제 설명 제한사항 접근방식1 - 입력받은 문자열의 각 문자에 네 가지 발음중 하나라도 포함돼있는지 확인 - 있을 해당 문자를 replace를 이용해 제거하고 계속 확인 풀이코드1(틀림) def solution(babbling): words = ["aya", "ye", "woo", "ma"] result = [] for babb in babbling: original = babb for word in words: babb = babb.replace(word, "") if babb == "": result.append(original) return len(result) - "wyeoo"가 들어가면 "we"가 제거되고 "w"랑"oo"가 붙어버려서 제거된다(원래는 말할 수 없는 단어임) 접근방식2 - 위 코드..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/YXGtP/btsGQ2XewOr/2BtnmG0biXojWg2FfvKzj1/img.png)
문제 설명 제한사항 접근방식 - lines 배열을 정렬 - 겹치는 구간을 저장할 배열 생성, True / False로 기록 풀이코드 def getOverlab(line1, line2): if line1[1] > line2[0]: if line1[1] > line2[1]: return line2 else: return [line2[0], line1[1]] else: return [] def checkOverlab(lst, case): if case: for i in range(case[0], case[1]): lst[i] = True return lst def solution(lines): answer = 0 lines.sort() tmp = sum(lines, []) min_num = min(tmp) m..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bRU32p/btsGQ9aRJcp/OV5SWlrdJFKHRCdqMXE27K/img.png)
문제 설명 제한사항 접근방식 - 딕셔너리를 이용해서 각 주사위의 숫자와 등장한 횟수를 기록 - 등장한 횟수를 정렬해서 경우의 수를 나눠서 풀이 풀이 코드 def solution(a, b, c, d): answer = 0 dice_dic = {} for i in range(1, 7): dice_dic[i] = 0 dice_dic[a] += 1 dice_dic[b] += 1 dice_dic[c] += 1 dice_dic[d] += 1 sorted_dice = sorted(dice_dic.items(), key = lambda x : x[1], reverse = True) print(sorted_dice) if sorted_dice[0][1] == 4: answer += 1111 * sorted_dice[0]..