분류 전체보기
-
단어변환프로그래머스(Programmers) 2021. 11. 15. 23:28
입출력 예 begin target words return "hit" "cog" ["hot", "dot", "dog", "lot", "log", "cog"] 4 "hit" "cog" ["hot", "dot", "dog", "lot", "log"] 0 입출력 예 설명 예제 #1 문제에 나온 예와 같습니다. 예제 #2 target인 "cog"는 words 안에 없기 때문에 변환할 수 없습니다. #include #include #include #include using namespace std; vector wordCheck(51,false); vector wordsBook; int answer =100000; string targetWord; bool compare(string begin, string wor..
-
카펫프로그래머스(Programmers) 2021. 11. 13. 01:54
제한사항 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다. 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다. 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다. 입출력 예 brown yellow return 10 2 [4, 3] 8 1 [3, 3] 24 24 [8, 6] #include #include using namespace std; vector solution(int brown, int yellow) { vector answer; int area = brown + yellow; for(int width =1; width (WIDTH-2) * (HEIGHT-2) = yellow라는 제한사항을 넣어주어야하는 문제입니다. => 해당문제에는 ..
-
소수만들기프로그래머스(Programmers) 2021. 11. 10. 22:50
=> DFS를 사용하여 풀 수 있는 문제입니다. => DFS를 사용하며 시작하는 INDEX를 하나씩 늘려가며 중복되는 수의 조합은 제외하였습니다. => DFS를 사용하며 Parameter들의 값이 실제로 올라가는 것인지, 넘기는 값만 올라가는 것인지, 주소를 참조하는 것인지 등을 잘 판단하여 써야 합니다. => 소수인지를 판별하는 함수를 생성하여 소수를 판별하여 전역변수에 소수 여부를 기록하였습니다. *1은 소수가 아니며 2는 소수이므로 미리 표시해둡니다. => 시간초과의 경우에 걸리지 않도록 return문을 잘 넣어줍니다. if(cntAdd == 3) { if(prime[sum]) { cnt++;return; } Prime(sum); if(prime[sum]) { cnt++; } return; } =>..
-
신규아이디 추천프로그래머스(Programmers) 2021. 11. 9. 00:17
예를 들어, new_id 값이 "...!@BaT#*..y.abcdefghijklm" 라면, 위 7단계를 거치고 나면 new_id는 아래와 같이 변경됩니다. 1단계 대문자 'B'와 'T'가 소문자 'b'와 't'로 바뀌었습니다. "...!@BaT#*..y.abcdefghijklm" → "...!@bat#*..y.abcdefghijklm" 2단계 '!', '@', '#', '*' 문자가 제거되었습니다. "...!@bat#*..y.abcdefghijklm" → "...bat..y.abcdefghijklm" 3단계 '...'와 '..' 가 '.'로 바뀌었습니다. "...bat..y.abcdefghijklm" → ".bat.y.abcdefghijklm" 4단계 아이디의 처음에 위치한 '.'가 제거되었습니다. "...
-
백준 2003 수들의 합 2 C++백준 algorithm 2021. 11. 2. 23:03
=> 투포인터의 기본개념을 묻는 문제입니다. => while문을 통해 시간 복잡도 O(N)의 속도를 이끌어낼 수 있는 알고리즘입니다. https://codingham.tistory.com/232 백준 1806 - 부분합 => 투 포인터 알고리즘의 개념을 알면 풀 수 있는 문제입니다. (저도 이 문제를 풀면서 처음으로 해당 알고리즘을 들었습니다.) => start 점과 end 점의 위치를 변환해가며 S의 값을 넘으면 가장 적은 codingham.tistory.com 위 문제는 투포인터를 활용한 문제입니다. 해당 문제를 푼 후에 해당 문제를 풀어보는 것도 좋은 방법입니다. => arr[0] 부문에 값을 미리 넣어 계속 틀렸었습니다. #include #include using namespace std; int..
-
백준 1806 - 부분합백준 algorithm 2021. 11. 1. 23:02
=> 투 포인터 알고리즘의 개념을 알면 풀 수 있는 문제입니다. (저도 이 문제를 풀면서 처음으로 해당 알고리즘을 들었습니다.) => start 점과 end 점의 위치를 변환해가며 S의 값을 넘으면 가장 적은 길이를 찾아내는 방법입니다. => while문에서는 end가 0 인경우에 값을 부분합에 포함하지 않으므로, 이전에 값을 더해주는 과정이 필요합니다. => while문을 통해 start 점이 end점을 앞서지 못하도록 하며, end점이 N(배열 원소의 개수)를 넘지 못하도록 합니다. (배열의 끝점 = (원소의 갯수 -1) ) => 부분합이 S를 넘지 못할 경우 end점을 뒤로 한 칸 미루며 다시 한번 계산합니다. => 부분합이 S인 경우, 최소값을 구하고 다시 한번 end점을 뒤로 미룹니다. ( 이후..
-
최소직사각형프로그래머스(Programmers) 2021. 10. 14. 22:32
제한사항 sizes의 길이는 1 이상 10,000 이하입니다. sizes의 원소는 [w, h] 형식입니다. w는 명함의 가로길이를 나타냅니다. h는 명함의 세로 길이를 나타냅니다. w와 h는 1 이상 1,000 이하인 자연수입니다. 입출력 예 설명 입출력 예 #1 문제 예시와 같습니다. 입출력 예 #2 명함들을 적절히 회전시켜 겹쳤을 때, 3번째 명함(가로: 8, 세로: 15)이 다른 모든 명함보다 크기가 큽니다. 따라서 지갑의 크기는 3번째 명함의 크기와 같으며, 120(=8 x 15)을 return 합니다. 입출력 예 #3 명함들을 적절히 회전시켜 겹쳤을 때, 모든 명함을 포함하는 가장 작은 지갑의 크기는 133(=19 x 7)입니다. #include #include #include #include ..