본문 바로가기

반응형
SMALL

알고리즘 문제 풀이/Baekjoon

14425 - 문자열 집합 (Hash 풀이) https://www.acmicpc.net/problem/14425 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어진다. 입력으로 주어지는 문자열은 알파벳 소문자로만 이루어져 있으며, 길이는 500을 넘지 않는다. 집합 S에 같은 문자열이 여러 번 주어지는 경우는 없다. www.acmicpc.net Trie로 풀었던 문제를 Hash로 풀어봅시다. Hash는 뭐 다들 아시죠? 제가 미리 올려놓은 그 코드를 확인하시면 될 거 같습니다. 아래에서 다룬 것과 완전 똑같아요. 충돌처리도 했습니다 ! https://g.. 더보기
14425 - 문자열 집합 (Trie 풀이) https://www.acmicpc.net/problem/14425 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어진다. 입력으로 주어지는 문자열은 알파벳 소문자로만 이루어져 있으며, 길이는 500을 넘지 않는다. 집합 S에 같은 문자열이 여러 번 주어지는 경우는 없다. www.acmicpc.net Trie를 더 연습해봅시다 !! 문제는 뭐 이해가 안가실건 없다고 생각합니다. 라이브러리를 쓰면 간단하게 풀 수 있는 문제인데.. 저희는 프로를 위한 준비로 구현 능력을 직접!! 기르는 시간을 가져보도록 합시다... 더보기
12791 - Starman https://www.acmicpc.net/problem/12791 12791번: Starman 첫 번째 줄에 질의의 수 정수 Q(Q ≤ 100)가 주어진다. 이후 Q개의 줄에 질의 S, E(1 ≤ S ≤ E ≤ 2016)가 정수로 주어진다. www.acmicpc.net 문자열 알고리즘의 투 톱 중 트라이는 앞선 전화번호 목록에서 풀어보았습니다. https://ggodong.tistory.com/160 5052 - 전화번호 목록 https://www.acmicpc.net/problem/5052 5052번: 전화번호 목록 문제 전화번호 목록이 주어진다. 이때, 이 목록이 일관성이 있는지 없는지를 구하는 프로그램을 작성하시오. 전화번호 목록이 일관성을 유지하려면,.. ggodong.tistory.com 이젠.. 더보기
5052 - 전화번호 목록 https://www.acmicpc.net/problem/5052 5052번: 전화번호 목록 문제 전화번호 목록이 주어진다. 이때, 이 목록이 일관성이 있는지 없는지를 구하는 프로그램을 작성하시오. 전화번호 목록이 일관성을 유지하려면, 한 번호가 다른 번호의 접두어인 경우가 없어야 한다. 예를 들어, 전화번호 목록이 아래와 같은 경우를 생각해보자 긴급전화: 911 상근: 97 625 999 선영: 91 12 54 26 이 경우에 선영이에게 전화를 걸 수 있는 방법이 없다. 전화기를 들고 선영이 번호의 처음 세 자리를 누르는 순간 바로 긴급전화가 www.acmicpc.net 문자열 알고리즘, 자료구조엔 투 톱이 있습니다. (주관적인 생각입니다) 해시(hash)와 트라이(Trie)가 바로 그 것인데요. 해시.. 더보기
1920 - 수 찾기 https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1≤N≤100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1≤M≤100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수들의 범위는 int 로 한다. www.acmicpc.net 제가 알고리즘 문제 풀 때 항상 약했던 부분이 이분 탐색이라서 백준 이분 탐색 문제를 재미삼아 풀어봤습니다. 간단합니다. 처음 N개의 배열을 정렬하고 M개의 배열을 하나씩 뽑아서 이분 탐색을 시켜서 있으면 1을 출력하고 없으면 0을 출력하면 됩니다. #include #include void.. 더보기
1717 - 집합의 표현 https://www.acmicpc.net/problem/1717 1717번: 집합의 표현 첫째 줄에 n(1≤n≤1,000,000), m(1≤m≤100,000)이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는 a가 포함되어 있는 집합과, b가 포함되어 있는 집합을 합친다는 의미이다. 두 원소가 같은 집합에 포함되어 있는지를 확인하는 연산은 1 a b의 형태로 입력이 주어진다. 이는 a와 b가 같은 집합에 포함되어 있는지를 확인하는 연산이다. a www.acmicpc.net 이 전에 풀었던 1976 - 여행 가자 문제와 유사한 문제입니다. 단, 이 문제는 중간 중간마다 결과를 출력해야 한다는 점만 분기를 .. 더보기
1976 - 여행 가자 MST (Minimum Spanning Tree, 최소신장트리)를 하려면 크루스칼 알고리즘이 필요합니다. 근데 크루스칼 알고리즘을 사용하기 위해선 Union Find라는 알고리즘이 또 필요합니다. 그렇다면 차근차근 Union Find부터 알아봅시다. Union Find란 서로가 속한 집합이 같은 집합인지 파악하는 것입니다. 즉, 학교 내의 학생 2명이 같은 반인지를 확인하는 알고리즘이라 생각하면 됩니다. Union Find를 구현하기 위해 배열과 Tree를 사용할 수 있지만, 본 글에서는 배열로 다루는 Union Find를 설명할 것입니다. Union Find를 구하기 위해선 총 3개의 행위(메소드)가 필요합니다. 우선 배열을 초기화하는 init과 각자의 Root를 구하기 위한 find, 서로 같은 Ro.. 더보기
2110 - 공유기 설치 https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (1 ≤ xi ≤ 1,000,000,000)가 한 줄에 하나씩 주어진다. www.acmicpc.net Binary Search 문제입니다. 최근 면접 준비로 기본적인 알고리즘을 공부하고 있는데, 딱 좋은 알고리즘이 Binary Search 같네요. 마침 제가 Binary Search 문제였다는 것을 알았기에 풀 수 있었던 문제였지만, 그게 아니었다면 Binary Search까지 생각해내기 어려웠을 거 같습니다. 왜 Bi.. 더보기

반응형
LIST