본문 바로가기

Algorithm

(2139)
(C++) - 프로그래머스(위클리 챌린지) : 5주차_모음사전 https://programmers.co.kr/learn/courses/30/lessons/84512 코딩테스트 연습 - 모음사전 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니 programmers.co.kr 기본 전수조사 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 모음목록 문자열 str, 모음으로 이뤄진 사전 내용을 저장할 map변수 comb을 선언해줍니다. 📔 풀이과정 dfs를 수행해 5개의 모음 중 i개로 만들 수 있는 문자열들을 모두 구해 comb에 저장해줍니다. 📔 정답출력 comb에 대해 for loop를 ..
(C++) - 백준(BOJ) 12919 : A와 B 2 https://www.acmicpc.net/problem/12919 12919번: A와 B 2 수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수빈 www.acmicpc.net 전수조사 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 문자열 s, t를 입력받습니다. 📔 풀이과정 1. s에서 t로 만든다면 매 문자에 대해 2가지 경우의 수를 확인해야 하므로 2^50시간복잡도를 가지게 됩니다. 이는 시간초과로 틀리게 됩니다. 2. 반대로 t에서 s를 만드는 생각을 해야 합니다. 때문에 명령어는 다음처럼 바뀌게 됩니다. 2-1. 문자열 ..
(C++) - 프로그래머스(연습문제) : JadenCase 문자열 만들기 https://programmers.co.kr/learn/courses/30/lessons/12951 코딩테스트 연습 - JadenCase 문자열 만들기 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고 programmers.co.kr 문자열을 다루는 문제였습니다. 📕 풀이방법 📔 풀이과정 for loop를 인자로 받은 s의 size만큼 각각 수행합니다. 1. 대문자였던 모든 문자를 모두 소문자로 치환합니다. 2. 첫 문자가 소문자라면 대문자로 치환합니다. 📔 정답출력 인자로 받은 s를 반환합니다. 📕 Code #include using namespace..
(C++) - 백준(BOJ) 20366 : 같이 눈사람 만들래? https://www.acmicpc.net/problem/20366 20366번: 같이 눈사람 만들래? 높이가 (2, 5), (3, 5)로 구성된 눈사람 둘을 만드는 것이 최적의 경우 중 하나이다. |7-8| = 1 다른 경우로는 (2, 9), (5, 5)로 두 눈사람을 만드는 경우가 있다. |11-10| = 1 www.acmicpc.net two pointer로 해결한 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 눈사람 수 n, 정답을 출력할 변수 ans, 눈덩이의 지름을 저장할 일차원 배열 snow를 선언한 후 적절히 입력받습니다. 📔 풀이과정 i ~ j까지의 눈사람이 다음과 같이 있을 때 i, j지름의 눈덩이로 눈사람을 만들고 i+1, j-1지름의 눈덩이로 다른 눈사람을 만든다고 볼 수 있습니다...
(C++) - 백준(BOJ) 22251 : 빌런 호석 https://www.acmicpc.net/problem/22251 22251번: 빌런 호석 LED를 2개까지 바꿀 수 있을 때, 5층에서 3층, 6층, 8층, 그리고 9층으로 바꿔버릴 수 있다. www.acmicpc.net 전수조사 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 시작 층 startFloor, 보여줄 화면의 자리수 display, 남은 bit 수 bitNum, 제한 수 limitNum, 어떤 수를 바꾸는데 바꿔야할 bit개수 convertBit를 선언 후 적절히 입력받습니다. 📔 풀이과정 1. startFloor가 11인데 display가 4라면 0011식으로 보여야 합니다. 사전처리를 해서 startFloor를 수정해줍니다. 2. dfs함수를 수행합니다. 📔 정답출력 dfs함수의 결과를..
(C++) - 백준(BOJ) 9081 : 단어 맞추기 https://www.acmicpc.net/problem/9081 9081번: 단어 맞추기 입력의 첫 줄에는 테스트 케이스의 개수 T (1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 하나의 단어가 한 줄로 주어진다. 단어는 알파벳 A~Z 대문자로만 이루어지며 항상 공백이 없는 연속된 알 www.acmicpc.net 전수조사 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 test case t, 두 번째 문자열을 출력하기 위한 cnt, 문자열 s, ans를 선언한 후 입력받습니다. 📔 풀이과정 next_permutation함수를 이용해서 문자열s 다음을 출력합니다. cnt가 2라면 바로 break해줍니다. 📔 정답출력 ans를 출력합니다. 📕 Code #include using namespace st..
(C++) - 백준(BOJ) 25304 : 영수증 https://www.acmicpc.net/problem/25304 25304번: 영수증 준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것 www.acmicpc.net 간단한 비교 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 전체 금액 totalPrice, test case t, sum, 물건 개당 값 a, 문건 개수 b를 선언해줍니다. 📔 풀이과정 t마다 a, b를 입력 받고 그 물건의 전체 값은 a + b이므로 sum에 추가해줍니다. 📔 정답출력 sum과 totalPrice가 같다면 Yes를 아니라면 No를 출력합니다. 📕 Code #include #define l..
(C++) - 백준(BOJ) 15658 : 연산자 끼워넣기 (2) https://www.acmicpc.net/problem/15658 15658번: 연산자 끼워넣기 (2) N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(×), 나눗셈(÷)으로만 이루어져 있다. 연산자의 개수 www.acmicpc.net 전수조사 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 수 개수 n, 수의 정보를 입력받을 일차원 배열 nums, 최솟값을 저장할 minAns, 최댓값을 저장할 maxAns, 연산자 개수를 저장할 op를 선언후 적절히 입력받습니다. 📔 풀이과정 첫 번째 수 부터 연산자를 입력받습니다. 이후 연산자별로 backtracking함수를 수행합니다. depth가 ..