전체 글 100

[백준/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 를 담고... 이런 식으로, 각 문자가 나와야 하..

[백준/c++] 4459 - Always Follow the Rules in Zombieland

www.acmicpc.net/problem/4459 4459번: Always Follow the Rules in Zombieland Input will begin with an integer q, 0 < q ≤ 50, on its own line signifying the number of quotes. On the following lines will be the quotes, one per line. No quote will be greater than 65 characters. The first quote will be rule 1, the second quote rule 2 www.acmicpc.net 1) 풀이 좀비랜드에서는 살아남기 위해 따라야 하는 몇가지 룰들이 있다. 오래 살아남기 위해서는..

[백준/c++] 10174 - 팰린드롬

www.acmicpc.net/problem/10174 10174번: 팰린드롬 팰린드롬은 앞으로 읽으나 뒤로 읽으나 똑같은 단어나 숫자들을 말한다. 일반적으로 대소문자를 구분하지 않지만, 공백은 구분한다. 다음은 팰린드롬의 예시이다. Anna Harrah Arora Nat tan 9998999 123 www.acmicpc.net 1) 풀이 입력받은 문자열을 맨앞과 맨뒤에서 차례대로 한글자씩 비교해보면 되는 문제이다. 이런식으로 문자열이 저장되어 있다고 생각하자. 칸은 각각의 문자가 들어있는 0부터 n-1까지의 인덱스로 정의할 수 있다. (string s. s[0], s[1]...) 처음에는 맨앞의 문자와 맨뒤의 문자 하나씩 비교를 한다. (반복문으로) 그 다음부터는 맨앞의 문자는 인덱스를 늘려가면서, 맨뒤..

[백준/c++] 2309 - 일곱 난쟁이

https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 1) 풀이 이 문제를 알고리즘 공부 막 시작했을 때 한 번 마주한 적이 있다. 그때는 아무 것도 모르니까 어떻게 풀어야 할지 감도 안 오고...! 이리저리 헤매다가 결국 몇달 공부하고 나서야 맞힐 수 있었던 문제인데 오랜만에 다시 푸니까 약간의 실수(밑에 적어놓음) 빼고는 스무스하게 풀린다! 꽤 기쁜일... 티는 안 나지만 그래도 나도 실력이 늘고 있구나 싶구😊 아무튼, 난쟁이 7명 키의 총합은 100인 ..

[알고리즘] 브루트 포스(Brute Force | 완전탐색)

※ 배워가고 있는 학생입니다. 틀린 부분에 대한 댓글 환영입니다 😊 1) '브루트 포스'란? (완전탐색이란?) Brute: 무식한, 짐승같은 Force: 힘 '무식한 힘', 즉 말그대로 무식하게 모든 경우의 수를 일일이 다 계산하면서 답을 찾아내는 알고리즘이다. 무식하게 문제를 접근하니 틀릴 일이 없다는 장점이 있지만, 시간복잡도가 엄청나게 커진다는 단점이 있다. 가령, 1부터 100까지의 합을 구하는 문제가 있다고 치자. 다양한 방법이 있겠지만, 브루트 포스는 그냥 1부터 1+2=3, 3+3=6, 6+4=10... 이런 식으로 100까지 더해갈 것이다. 100은 비교적 작은 숫자이므로, 시간 복잡도가 그리 크지 않을 수 있지만 만약 100억개의 수를 더한다고 치면 시간복잡도는 엄청나게 늘어나고 만다. ..

728x90