Develog/코딩테스트5 UnionFind(합집합 찾기) 알고리즘 class UnionFind{ constructor(size){ this.parent = Array.from({length:size}, (_, i)=>i) } find(x){ if(this.parent[x] === x){ return x; } return (this.parent[x] = this.find(this.parent[x])); //부모의 값을 넣음으로써 경로 단축 } union(x, y){ const rootX = this.find(x); const rootY = this.find(y); if (rootX !== rootY){ this.parent[rootX] = rootY; .. 2024. 10. 12. 자주쓰는 문법 모음 1. 리스트 끼리의 덧셈 list1 = dict[i-2]; list2 = dict[i-1]; dict[i] = [x+y for x,y in zip(list1, list2)] 2. 여러 열에 적힌 값 리스트로 받기 data = [int(sys.stdin.readline().strip()) for i in range(n)]; 3. 에라토스테네스의 체 def isPrime(n): num = int(math.sqrt(n)); if n 2022. 6. 25. 파이썬 자주쓰는 함수 모음 1. 정렬 .sort() List.sort()로 리스트를 기본적으로 오름차순으로 정렬하고 List.sort(reverse =True) 하면 내림차순으로 정렬한다. + 새로운 정렬 리스트를 반환하는 함수는 sorted 리스트 자체를 정렬시켜버리는 함수는 sort 함수다. 2. set() 집합이란 의미로 순서가 없고 집합 안에서는 중복이 제거되고 unique한 값을 가진다. a = [3 3 6] len(set(a) == 2) 를 이용해 중복되는 값이 있는지 검사할 수 있다. 3.sum() sum(a) 리스트 값을 모두 더해준다. 3. map과 s.count list(map(s.count,['c=','c-','dz=','d-','lj','nj','s=','z='])) 꽤 신기한 코드다. 전체 문자열의 개수가 .. 2022. 6. 14. [python]sys.stdin - 시간초과가 떠서 input()은 사용못하게 됐다. - 그래서 sys.stdin으로 입력을 받는연습을 해보자! sys.stdin을 쓸때는 맨 끝의 개행문자 까지 같이 입력받기 때문에 문자열을 저장받을땐 .rstrip을 추가해주자 1.한줄을 읽고 개행문자 삭제 2. 여러줄은 문자열로 입력받고 싶을 때 단 이때는 lines[0]을 하면 저 전체문장이 출력된다. 이때 sys.stdin.read().splitlines()를 이용하면 개행문자를 지운 리스트 형태로 반환해주기 때문에 인덱스로 접근도 가능해진다. 기억해두기! 3. 여러줄을 리스트로 입력 받고 싶을 때 개행 문자가 포함된 걸 볼 수 있고, 리스트로 받았기 때문에 인덱스로 접근할 수 있다. 2022. 6. 13. 코딩테스트 기초쌓기 앞으로 알고리즘 공부를 시작하려한다. 나는 어느정도 가이드라인이 있는 공부를 좋아하는데, 이전에 알고리즘 공부하는데 애먹은 적이 있어 인터넷에 검색을했다. 아니나 다를까 코딩테스트의 시작은 누구나 힘든 여정인것 같다. 글들을 찾아보던 중 가이드라인을 제시해주는 plzrun님의 블로그를 따라가 볼까한다. plzrun님이 쓴 내용을 간추리자면 1. 아래 문제들을 4주안에 빠르게 푸는 것을 권장 2. 1시간 이내에 풀리지 않는 문제는 모르는 것이므로 개념이나 다른사람의 코드를 참고(AC받은 코드들) 3. 자신이 모르는게 뭔지 파악하고 빠르게 넘어간다. 종만북이라는 책을 처음부터 봐도 좋으나, 이는 모르는 부분을 채워가는 속성법임. 다만 기초 입출력 10분이 넘어간다면 모르는 부분이 있다는것, 꼭 잘하는.. 2022. 3. 20. 이전 1 다음