Python(11)
-
[DFS][BFS] 백준 11724 파이썬 :연결요소의 개수
📌 키 포인트 - 주어진 정보를 가지고 그래프를 어떤 식으로 만들지가 중요 - 조건 !! 에 따르면 노드의 개수는 N이고 모든 노드들은 1 이상 N이하이므로 노드는 각각 1, 2, 3, ..., N일 것임 ✏️ 해결 과정 복기 - 먼저 노드들을 연결해서 그래프를 구성한다. - 방문할 수 있는 노드들을 전부 방문하고 더 이상 방문할 노드가 없어지면 그 때 연결요소의 개수 +1 - DFS, BFS 상관 없으나 DFS가 먼저 생각남 DFS 풀이 - 런타임에러: Recursion Error가 나옴 - python이 정한 최대 재귀 깊이보다 재귀 깊이가 더 깊어질 때 나는 오류 (https://help.acmicpc.net/judge/rte/RecursionError) → sys.setrecursionlimit(..
2022.07.25 -
[BFS] 백준 1012 파이썬 :유기농 배추
https://www.acmicpc.net/problem/1012 ✏️ 해결 과정 복기 - 그래프에서 1이 연속으로 모여있는 부분들의 개수를 구하는 문제 - 값이 1인 특정 좌표부터 시작하여 연속으로 이어져 있는 1들을 모두 방문처리해야 함 - DFS, BFS 상관 없음 (방문 처리만 하면 되므로) - so BFS로 구현 (일반적으로 BFS가 DFS보다 빠르기 때문) - 먼저 BFS 함수를 정의한 후에, - 1차시도: 그래프의 모든 좌표에 대해서 하나씩 BFS 함수를 호출하는 식으로 시도 - but 시간초과 - 2차시도: 입력받은 값이 1인 좌표들을 별도의 배열 (이하 cabbage)에 저장해두고, 해당 배열의 좌표들에 대해서만 BFS 함수 호출하는 식으로 시도 - but 역시 시간초과 (당연한 것이 모..
2022.07.14 -
[TIL] 220409 - python 문자열 자릿수 채우기, 순열/조합/product, lambda함수를 활용한 정렬
2022/04/08 FRI 🎢 ☑️ 프로그래머스 해시 2문제 🔛 국제개발협력개론 에세이 ✔️ 문자열 앞에 0 채우기 (자릿수만큼 표시) : 문자열.zfill(표시할자릿수) ex. str = "39" → str.zfill(4) → "0039" 또는 문자열.rjust(표시할자릿수, 채울문자) - .rjust , .ljust 모두 가능 ex. str = "39" → str.rjust(4, "0") → "0039" ex. str = "39" → str.ljust(4, "a") → "39aa" ✔️ 경우의 수 itertools 라이브러리 - 순열, 조합, product * from itertools import permutation/combination/product * [(),(),...] 리스트 안에 여러 튜..
2022.04.10 -
[해시][정렬] 프로그래머스 - 베스트앨범 문제 - 파이썬 python
https://programmers.co.kr/learn/courses/30/lessons/42579?language=python3 난리가 나버렸다 !!!!! 해시 문제이지만 정렬 문제라고 해도 될 것 같다. 람다 함수를 잘 활용해 정렬하는 것이 중요하다. 참고한 풀이: https://dream-and-passion.tistory.com/5 def solution(genres, plays): answer = [] cnt = len(genres) # = len(plays) gsp = {} for i in range(cnt): if genres[i] not in gsp: gsp[genres[i]] = plays[i] else: gsp[genres[i]] += plays[i] gsp = dict(sorted(..
2022.04.09 -
[해시] 프로그래머스 위장 문제 파이썬(python)
https://programmers.co.kr/learn/courses/30/lessons/42578 맞았습니다: from itertools import combinations def solution(clothes): count={} for i in clothes: if i[1] in count: count[i[1]] += 1 else: count[i[1]] = 1 total = 1 keys = list(count.keys()) types = len(keys) for key in keys: total *= count[key]+1 total -= 1 return total ✔︎ 분명 어제 Counter함수를 새로 배웠는데 적용을 못했다. Counter(배열) → 배열 안에 각 원소가 몇 개 들어있는지를 <..
2022.04.09 -
[해시] 프로그래머스 -전화번호 목록
https://programmers.co.kr/learn/courses/30/lessons/42577 def solution(phone_book): answer = True phone_book.sort() for i in range(len(phone_book)-1): l = len(phone_book[i]) if phone_book[i] == phone_book[i+1][:l]: answer = False return answer - 전화번호부를 정렬해준다. ** 문자열 정렬은 가장 앞의 문자의 유니코드를 기준으로 정렬한다. (만약 가장 앞 문자가 같은 것이 여러개라면 그 다음 문자) (참고: https://skeo131.tistory.com/48) 따라서 정렬을 해주면 접두어가 있을 경우, 해당 문자열..
2022.04.06