Problem Solving/백준 33

[백준/c++] 17296 - But can you do it in 0.5x A presses?

https://www.acmicpc.net/problem/17296 17296번: But can you do it in 0.5x A presses? 첫째 줄에 스테이지의 개수 N이 주어진다. N은 1 이상 1000 이하이다. 다음 줄에는 각 스테이지를 깨는데 필요한 A버튼의 최소 횟수가 주어진다. 모두 0.5의 배수이며, 0 이상 1000 이하이다. 정수일 www.acmicpc.net 요새 블로그 글을 통 안 적어서, 한꺼번에 모아서 적을려다가 내가 문제 이해하는 데에만 너무 많은 시간을 쏟아부은 문제가 있어 이렇게 적는다😥 나도 이해가 되게 적을 수 있을지는 모르겠지만, 나 같은 사람이 좀 적어졌으면 하는 마음으로 써보겠다! 1) 풀이 " 음이 아닌 정수 x에 대해 x+0.5라는 것은 정말로 A버튼을 ..

[백준/c++] 14042 - Tandem Bicycle

https://www.acmicpc.net/problem/14042 14042번: Tandem Bicycle Since time immemorial, the citizens of Dmojistan and Pegland have been at war. Now, they have finally signed a truce. They have decided to participate in a tandem bicycle ride to celebrate the truce. There are N citizens from each country. They must be ass www.acmicpc.net 1) 풀이 각각 n명의 Dmojistan의 시민과 Pegland의 시민을 2인승 자전거에 한명씩 태우는데, 각 시민..

[백준/c++] 20551 - Sort 마스터 배지훈의 후계자

https://www.acmicpc.net/problem/20551 20551번: Sort 마스터 배지훈의 후계자 지훈이는 Sort 마스터다. 오랫동안 Sort 마스터 자리를 지켜온 지훈이는 이제 마스터 자리를 후계자에게 물려주려고 한다. 수많은 제자들 중에 후계자를 고르기 위해서 지훈이는 제자들에게 문제 www.acmicpc.net 1) 풀이 주어지는 input들을 하나의 벡터에 집어넣고, 정렬한 뒤 lower_bound 함수를 사용하여 찾고자 하는 값의 인덱스를 구한뒤 인덱스를 출력하면 되는 문제이다. lower_bound 함수에 대한 설명은 최근에 풀이한 문제에 있으므로. 해당 글을 첨부해놓겠다🤗 2021.04.23 - [알고리즘 | 자료구조/백준] - [백준/c++] 19637 - IF문 좀 대신..

[백준/c++] 20044 - Project Teams

https://www.acmicpc.net/problem/20044 20044번: Project Teams 입력은 표준입력을 사용한다. 입력의 첫 번째 행에는 팀 수를 나타내는 양의 정수 n(1 ≤ n ≤ 5,000)이 주어진다. 그 다음 행에 학생 si 의 코딩 역량 w(si)를 나타내는 2n개의 양의 정수가 공백으로 www.acmicpc.net 1) 풀이 두명씩 팀을 짜되, 각 팀의 코딩 역량이 가능한 적은 차이가 나도록, 즉 각 팀들의 코딩역량이 최대한 밸런스를 이루도록 팀을 짠 후 최소의 코딩역량을 가진 팀의 역량을 출력하는 문제이다. 각 팀들의 코딩역량이 밸런스를 이루기 위해서는 가장 큰 값+가장 작은 값 의 순대로 팀을 짜면 된다. 가령 각 학생의 역량을 저장하는 자료구조를 deque(덱)으로..

[백준/c++] 11728 - 배열 합치기

https://www.acmicpc.net/problem/11728 11728번: 배열 합치기 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거 www.acmicpc.net 1) 풀이 두개의 배열에 주어지는 각각의 숫자를 저장한 뒤, 두 배열의 맨 앞 숫자들을 비교하여 더 작은 숫자를 출력해주고 출력해준 숫자는 배열에서 뺀 뒤 다시 비교를 반복하면 되는 문제이다. 배열의 맨앞을 pop 해줘야 하므로, 자료구조 중 deque을 이용하기로 했다! deque에 대한 자세한 설명은 3) 참고자료 블로그링크를 확인하길 바람 굉장히 간단한 원..

[백준/c++] 19637 - IF문 좀 대신 써줘

https://www.acmicpc.net/problem/19637 19637번: IF문 좀 대신 써줘 첫 번째 줄에는 칭호의 개수 N (1 ≤ N ≤ 105)과 칭호를 출력해야 하는 캐릭터들의 개수 M (1 ≤ M ≤ 105)이 빈칸을 사이에 두고 주어진다. (1 ≤ N, M ≤ 105) 두 번째 줄부터 N개의 줄에 각 칭 www.acmicpc.net 1) 풀이 STL에서 제공하는 lower_bound 함수를 사용하여 푸는 문제이다. lower_bound 함수란, 간단히만 설명하자면 이진탐색 기반의 탐색 방법으로, 찾으려는 key 값보다 같거나 큰 숫자가 배열에서 몇번째로 처음 등장하는지 찾기 위해 사용하는 함수이다. 만약 찾는 key 값이 있으면 그 key값의 위치를, 없으면 key값보다 큰 가장 작..

[백준/c++] 21313 - 문어

https://www.acmicpc.net/problem/21313 21313번: 문어 문어에게 여덟개의 팔이 있다는 사실은 잘 알려져 있다. 하지만 문어들이 자신의 팔들을 1번, 2번, 3번, ..., 8번이라고 부른다는 말은 오늘 처음 들었을 것이다! 단, 시계방향으로 오름차순이라던 www.acmicpc.net 1) 풀이 사전순으로 제일 앞서는 n길이의 수열을 만드는 문제이다. 1번과 2번, 2번과 3번.... 1) 앞뒤번호로 이어진 문어는 서로 같은 번호의 손을 잡아야하고 2) 반드시 한 손으로만 손을 잡으며 3)이미 사용한 손으로 다른 문어의 손을 잡을 수 없다. 일단, 문어들이 잡은 손의 번호를 저장할 벡터를 준비한다. 그리고 각 문어들의 손 번호 1~8번이 저장된 배열(손번호 배열)을 준비한다..

[백준/c++] 15927 - 회문은 회문아니야!!

https://www.acmicpc.net/problem/15927 15927번: 회문은 회문아니야!! 팰린드롬이란 앞으로 읽으나 뒤로 읽으나 같은 문자열을 말한다. 팰린드롬의 예시로 POP, ABBA 등이 있고, 팰린드롬이 아닌 것의 예시로 ABCA, PALINDROME 등이 있다. 같은 의미를 가지는 여러 단어들을 www.acmicpc.net 1) 풀이 뭔가 풀이방법은 알겠는데, 자꾸 틀려서 애를 먹었던 문제! 이 방법이 맞는 것 같은데, 며칠을 풀어도 자꾸 틀렸다거나, 시간초과가 떠서 답답해서 다른 분들의 풀이를 찾아보았다. 결론적으로 내가 생각한 방법이 맞지만, 인덱스 접근에서나 케이스마다 처리해주는 방식에서 조금 오류가 있었던 것 같다!!!!!!! 그래두 푼 게 어디야 ~ 내가 참고한 블로그는 ..

[백준/c++] 14650 - 걷다보니 신천역 삼 (Small)

www.acmicpc.net/problem/14650 14650번: 걷다보니 신천역 삼 (Small) 욱제는 ‘삼’이란 음절을 참 좋아한다. 인삼, 홍삼, 해삼, 삼성, 이춘삼(李春森), 삼식이, 삼시세끼, ㄴㄴ 그거 안 삼, 삼과 죽음, 알았삼, 금강삼도 식후경, 걷다보니 신천역 삼, 그리고 특히 일 www.acmicpc.net 1) 풀이 뭔가 풀이 방법은 알겠는데, 효율적이지 못해서 시간초과가 많이 나온 문제😥 정말... 나빼고 전부 3의 배수가 자리수 다 합해도 3의 배수라는 걸 다 알고 있었던 걸까....충격적이야 누군가는 내가 더 충격적이겠지만 흑흑 이게 문과생의 한계인걸까 하지만 난 의지의 문과생,,, 해냈다구요..~ 1. 0, 1, 2로 만들 수 있는 한자리수는 3의 배수가 없다. »n에 1..

[백준/c++] 13022 - 늑대와 올바른 단어

www.acmicpc.net/problem/13022 13022번: 늑대와 올바른 단어 첫째 줄에 단어가 주어진다. 단어는 w, o, l, f로만 이루어져 있으며, 길이는 50을 넘지 않는다. www.acmicpc.net 1) 풀이 1. w, o, l, f 의 각각의 문자는 모두 동일한 횟수로 나와야 한다. »각 글자가 나온 횟수를 세어줄 배열을 만든다 2. w가 나온 뒤에 o가 나올 수 있고, w와 o가 나온 다음에 l이 나올 수 있고 w, o, l가 나온 다음에 f가 나올 수 있다. »횟수 세어주는 배열에서 이전의 인덱스에 들어있는 숫자가 0이상인지, 즉 한 번 이상 나왔는지 반드시 체크해준다 *배열에서 인덱스 0은 w의 횟수를 담고, 인덱스 1인 o 를 담고... 이런 식으로, 각 문자가 나와야 하..

728x90