https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr이름이 귀여워서 선택한 귤 고르기 아래처럼 답을 적었는데def solution(k, tangerine): dic = {} for t in tangerine : if t in dic: dic[t] += 1 else : dic[t] = 1 l = sorted(list(dic.values()),reverse=True) type_idx = 0 cnt = 0 for t..
집합순서와 중복이 없는 원소들을 갖는 자료구조. 상호배타적 집합의 특성을 활용하는 분야 상호배타적이다 = 교집합이 없다.코딩테스트에서 상호배타적 집합을 배워야 하는 가장 현실적인 이유는 그래프 알고리즘에서 많이 활용하기 때이다. 그래프 알고리즘에서는 흔히 사이클을 확인하는 일이 많은데, 그 작업에서 상호배타적 집합 개념을 활용한다. 이 외에도 상호배타적 집합 개념을 활용하는 알고리즘은 다양하다. 이미지 분할 : 이미지를 서로 다른 부분으로 나누는 데 사용. 예를 들어 사람과 배경을 겹치지 않게 분할할 때 사용한다.게임 개발 : 예를 들어 플레이어와 적군이 충돌할 때 이 두 캐릭터가 겹치지 않게 하는 데 사용클러스터링 작업 : 각 작업이 서로 겹치지 않게 구성. 작업 간의 의존 관계가 없으면 동시에 ..
검사해주어야 할 부분 :1. 이미 사용한 단어이거나2. 첫 글자가 이전 단어와 일치하지 않음 처음에는 첫 글자인 부분도 검사해야 한다고 생각해서 길어졌으나 고려하지 않아도 되었다 def solution(n, words): used_words = set() prev_word = words[0][0] #이전 단어의 마지막 글자 for i, word in enumerate(words) : if word in used_words or word[0] != prev_word : return [(i%n) +1 , (i//n) +1] used_words.add(word) prev_word = word[-1] return [..
트리 데이터를 탐색하고 저장하기에 유용한 구조를 가지고 있다. 데이터를 어떤 방식으로 저장하고 탐색하는지 알아보자. 트리의 특성을 활용하는 분야 자동 완성 기능 : 트리는 문자열 처리에도 많이 활용된다. 예를 들어 검색 엔진에서 자동 검색어 추천 기능도 트라이 trie라는 독특한 트리 구조를 활용한 것이다. 이를 활용하면 접두사나 패턴 검색을 쉽게 할 수 있다. DB : 데이터베이스를 쉽게 검색, 삽입, 삭제를 할 수 있도록 트리를 활용하여 데이터를 구조화하고 인덱싱한다. 이때 B- 트리나 B+ 트리를 많이 사용한다. 나무를 거꾸로 뒤집어 놓은 모양의 트리 트리를 구성하는 노드 노드중 가장 위에 있는 노드를 루트 노드 라고 한다. 앞의 그림에서는 맨 위에 있는 값 1(A)이 들어 있는 노드가 루트 ..
면접 질문1. 해시 테이블에서 사용하는 해시의 개념은 무엇이며, 이러한 자료 구조가 배열, 리스트와 같은 다른 자료 구조와 비교하여 어떤 장점을 가지나요? 해시 테이블이 실생활에서 어떻게 사용될 수 있는지 예를 들어 설명하세요.해시는 해시 함수를 사용하여 변환한 값을 인덱스로 삼아 키와 값을 저장하여 빠른 데이터 탐색을 제공하는 자료구조 입니다. 배열, 리스트 등은 인덱스를 활용하여 탐색을 빠르게 만들지만, 해시는 키를 활용해 데이터 탐색을 빠르게 합니다.해시는 키와 데이터를 일대일 대응하여 저장하므로, 키를 통해 바로 데이터에 접근할 수 있습니다. 인덱스(숫자)로만 접근하는 배열보다 사람에게 접근성이 좀 더 좋은 자료구조입니다.실생활에서의 예시로는 연락처가 있습니다. 최종으로 얻고자 하는 것은 번호 값..