반응형

문자열 31

[백준 / BOJ] C++ 27880 Gahui and Soongsil University station

27880번: Gahui and Soongsil University station 문제 https://www.acmicpc.net/problem/27880 27880번: Gahui and Soongsil University station Soongsil University Station is famous as the deepest station on Seoul Subway Line 7. This station is so deep that the platform is on the B6. Gahui was surprised that she did not reach the platform after more than five minutes from the exit. Gahui wants to www.acmic..

Problem Solving/BOJ 2023.04.09

[백준 / BOJ] C++ 27930 당신은 운명을 믿나요?

27930번: 당신은 운명을 믿나요? 문제 https://www.acmicpc.net/problem/27930 27930번: 당신은 운명을 믿나요? 민지는 11번째 글자까지 읽었을 때 각각 1,3,5,7,9번째의 글자를 제거하고 YONSEI를 찾을 수 있다. www.acmicpc.net 풀이 주어진 문자열을 차례대로 탐색하며 KOREA와 YONSEI 중 먼저 완성되는 문자를 출력하는 문제다. 따라서 주어진 문자열의 각 문자에 대해 KOREA와 YONSEI에 포함된 문자라면 작업을 수행한다. KOREA와 YONSEI가 몇 번째 글자까지 완성되었는지 나타내는 변수 k와 y에 대해 k 또는 y가 (이번 글자가 들어있어야 할 위치 - 1)인 경우 1 증가시켜 줬다. 예를 들어 K는 KOREA의 1번째에만 쓰이므..

Problem Solving/BOJ 2023.04.03

[백준 / BOJ] C++ 1414 불우이웃돕기

1414번: 불우이웃돕기 문제 https://www.acmicpc.net/problem/1414 1414번: 불우이웃돕기 첫째 줄에 컴퓨터의 개수 N이 주어진다. 둘째 줄부터 랜선의 길이가 주어진다. i번째 줄의 j번째 문자가 0인 경우는 컴퓨터 i와 컴퓨터 j를 연결하는 랜선이 없음을 의미한다. 그 외의 경우는 랜선 www.acmicpc.net 풀이 최소 스패닝 트리(MST) 변형문제 중 하나로 간선의 가중치가 알파벳으로 입력된다. 문제 조건에 따라 ascii 코드를 기준으로 연산하여 간선을 저장한다. 기부할 수 있는 랜선의 길이는 최소 스패닝 트리의 가중치를 제외한 모든 가중치의 합이므로 간선을 저장할 때마다 cost에 가중치를 더해주고 최소 스패닝 트리의 컴포넌트를 연결할 때마다 간선의 가중치만큼 ..

Problem Solving/BOJ 2023.04.02

[백준 / BOJ] C++ 27868 On My Way Dorm

27868번: On My Way Dorm 문제 https://www.acmicpc.net/problem/27868 27868번: On My Way Dorm 첫 번째 줄에 입력 형식과 같은 방법으로 사무실이 있는 층에서 아인이의 기숙사가 있는 층으로 퇴근하기 위한 커맨드를 출력한다. 가능한 커맨드가 여러 가지일 경우 그중 아무것이나 출력한 www.acmicpc.net 풀이 엘리베이터를 사용한 출근 경로가 주어지고 퇴근 경로를 구하는 문제다. 지문만 보면 어려워 보이지만 출근 경로를 뒤집어서 출력하면 되는 문제다. 지문 난이도와 예제 때문에 헷갈리기 쉽다. 코드 #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NU..

Problem Solving/BOJ 2023.03.13

[백준 / BOJ] C++ 3111 검열

3111번: 검열 문제 https://www.acmicpc.net/problem/3111 3111번: 검열 첫째 줄에 단어 A가, 둘째 줄에 텍스트 T가 주어진다. A와 T는 알파벳 소문자로만 이루어져 있고, A는 최대 25자, T는 최대 300,000자이다. www.acmicpc.net 풀이 문자열 T의 왼쪽에서부터 탐색해 문자열 A가 있으면 제거하고, 오른쪽부터 탐색해서 또 있으면 제거, 또다시 왼쪽, 오른쪽,... 반복하며 더 이상 그 문자열 A를 찾을 수 없을 때 남아있는 문자열을 출력하는 문제다. front, back이라는 덱을 2개 사용했다. front는 문자열 T의 앞에서부터 차례대로 넣는 컨테이너고, back은 뒤에서부터 넣는 컨테이너다. 즉, front는 push_back와 pop_bac..

Problem Solving/BOJ 2023.03.06

[백준 / BOJ] C++ 1543 문서 검색

1543번: 문서 검색 문제 https://www.acmicpc.net/problem/1543 1543번: 문서 검색 세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한 www.acmicpc.net 풀이 문서와 단어를 입력받아 문서 내에 단어를 중복되지 않게 몇 개 셀 수 있는지 구하는 문제다. 문서의 가장 처음 인덱스(0)부터 단어와 비교를 하고 다르면 다음 index로 넘어간다. 만약 단어를 찾으면 카운트를 증가시키고 다음 탐색할 문서의 위치를 현재 위치에서 단어의 길이만큼 더해준다. 코드 #include using namespace std; int main() {..

Problem Solving/BOJ 2023.03.04

[백준 / BOJ] C++ 27522 카트라이더: 드리프트

27522번: 카트라이더: 드리프트 문제 https://www.acmicpc.net/problem/27522 27522번: 카트라이더: 드리프트 레드팀은 2, 4, 5, 6등을 달성하여 총 $20$점을, 블루팀은 1, 3, 7, 8등을 달성하여 총 $19$점을 기록하였다. www.acmicpc.net 풀이 각 레이서의 기록과 속한 팀을 pair로 받아 배열에 저장한다. 기록은 분:초:밀리초 형태이므로 문자열 오름차순으로 정렬하면 기록이 짧은 순으로 정렬이 된다. 이제 배열을 순회하며 각 레이서의 팀에 등수에 맞는 점수를 더해준다. 점수를 비교해 승리 팀을 출력하면 된다. 코드 #include using namespace std; int main() { ios::sync_with_stdio(false); ..

Problem Solving/BOJ 2023.02.26

[백준 / BOJ] C++ 27497 알파벳 블록

27497번: 알파벳 블록 문제 https://www.acmicpc.net/problem/27497 27497번: 알파벳 블록 첫째 줄에 버튼을 누른 횟수 $N$이 주어진다. $(1 \leq N \leq 1\,000\,000)$ 둘째 줄부터 $N$개의 줄에는 버튼을 누른 순서대로 누른 버튼에 대한 정보를 주며 아래와 같은 형식으로 주어진다. 1 c : 문자열 www.acmicpc.net 풀이 덱의 기본적인 쿼리를 사용하는 문제다. 가장 마지막에 추가한 수가 덱의 앞인지 뒤인지 판단하기 위해 스택을 만들어 하나씩 pop 하며 판단했다. 코드 #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); deque ..

Problem Solving/BOJ 2023.02.20

[백준 / BOJ] C++ 27494 2023년은 검은 토끼의 해

27494번: 2023년은 검은 토끼의 해 문제 https://www.acmicpc.net/problem/27494 27494번: 2023년은 검은 토끼의 해 흑묘 복권의 티켓 수 $N$이 주어진다. $(1 \leq N \leq 10\,000\,000)$ www.acmicpc.net 풀이 2023부터 N까지 차례대로 문자열로 바꾸어 어느 한 부분에 차례대로 2, 0, 2, 3이 존재하는지 확인하면 되는 문제다. 코드 #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n, ans = 0; cin >> n; for (int i = 2023; i

Problem Solving/BOJ 2023.02.20

[백준 / BOJ] C++ 1427 소트인사이드

1427번: 소트인사이드 문제 https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 숫자의 각 자리 수를 내림차순으로 정렬하는 문제다. 숫자를 string 타입으로 입력받고 내림차순으로 정렬해주면 된다. 내림차순 정렬은 비교 연산자 위치에 greater()을 넣어주면 된다. 코드 #include using namespace std; int main() { string a; cin >> a; sort(a.begin(), a.end(), greater()); cout

Problem Solving/BOJ 2023.02.19
반응형