알고리즘 분류: 자료 구조, 해시를 사용한 집합과 맵 문제 링크: https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 【 풀이 】 17219번: 비밀번호 찾기와 같이 map을 이용하여 풀 수 있는 문제이다. 2023.05.11 - [백준 [BAEKJOON]] - [백준] 17219번: 비밀번호 찾기 [C++] [백준] 17219번: 비밀번호 찾기 [C++] 알고리즘 분류: 자료 구조, 해시를 사용한 집합과 맵 문제 링크..
알고리즘 분류: 구현, 비트마스킹 문제 링크: https://www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 【 풀이 】 비트마스크 알고리즘을 활용하여 푸는 문제이다. 비트마스크란 이진수를 사용하는 컴퓨터 연산 방식을 이용해, 정수의 이진수 표현을 구현하는 데 사용되는 알고리즘이다. 비트연산을 이용하면, 원하는 숫자에 해당하는 인덱스의 비트를 0 또는 1로 표현하면서 집합을 구현해낼 수 있다. & 비트단위로 AND 연산 | 비트단위로 OR 연산 ^ 비트단위로 XOR 연산 ~ 단항연산자. 피연산..
알고리즘 분류: 자료 구조, 해시를 사용한 집합과 맵 문제 링크: https://www.acmicpc.net/problem/17219 17219번: 비밀번호 찾기 첫째 줄에 저장된 사이트 주소의 수 N(1 ≤ N ≤ 100,000)과 비밀번호를 찾으려는 사이트 주소의 수 M(1 ≤ M ≤ 100,000)이 주어진다. 두번째 줄부터 N개의 줄에 걸쳐 각 줄에 사이트 주소와 비밀번 www.acmicpc.net 【 풀이 】 C++ STL인 map 자료구조를 이용하면 쉽게 해결할 수 있다. mapm 위와 같이, key와 value를 pair 형식으로 저장하는 자료구조이다. 파이썬을 공부했다면 딕셔너리를 생각하면 되는데, 딕셔너리처럼 키를 통해 키에 해당하는 값에 접근할 수 있다. 즉 찾고자 하는 사이트 주소를 ..
알고리즘 분류: 구현, 브루트포스 알고리즘 문제 링크: https://www.acmicpc.net/problem/18111 18111번: 마인크래프트 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 www.acmicpc.net 【 풀이 】 주어진 배열요소 모두를 일정한 높이로 만드는 데 걸리는 최소 시간과 땅의 높이를 구하는 문제이다. 이 문제는 브루트포스 알고리즘을 이용하여 생각보다 간단히 해결할 수 있다. 즉 3중 for 문으로, 첫 for문은 모든 높이의 경우에 대해서, 두번째/세번째 for문은 주어진 배열에서 검증하면 된다. remove(배열 요소가 설정된..
알고리즘 분류: 구현, 문자열 문제 링크: https://www.acmicpc.net/problem/10988 10988번: 팰린드롬인지 확인하기 첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다. www.acmicpc.net 【 풀이 】 앞으로 읽으나 뒤로 읽으나 똑같은 문자열인지 판단하는 문제이다. 문자열의 절반까지만 반복을 설정하고, 앞과 뒤가 같은 문자이면 횟수를 카운트하면 된다. 그 횟수가 문자열의 절반과 크기가 같다면 '1'을 출력하고, 아니라면 '0'을 출력한다. 【 코드 】 #include #include using namespace std; int main(void) { string s; cin >> s; int c..
알고리즘 분류: 이분 탐색, 매개 변수 탐색 문제 링크: https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 【 풀이 】 2805번과 비슷하게 구할 수 있는 문제이다. 2023.05.06 - [백준 [BAEKJOON]] - [백준] 2805번: 나무 자르기 [C++] [백준] 2805번: 나무 자르기 [C++] 알고리즘 분류: 이분 탐색, 매개 변수 탐색 문제 링크: https://www.acmicpc.net/probl..