프로그래머스(Programmers)
-
단어변환프로그래머스(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단계 아이디의 처음에 위치한 '.'가 제거되었습니다. "...
-
최소직사각형프로그래머스(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 ..
-
복서 정렬하기 C++프로그래머스(Programmers) 2021. 10. 7. 23:25
입출력 예 weightshead2headresult [50,82,75,120] ["NLWL","WNLL","LWNW","WWLN"] [3,4,1,2] [145,92,86] ["NLW","WNL","LWN"] [2,3,1] [60,70,60] ["NNN","NNN","NNN"] [2,1,3] 입출력 예 #1 다음은 선수들의 정보를 나타낸 표입니다. 선수 번호vs 1번vs 2번vs 3번vs 4번승률자기보다 무거운 복서를 이긴 횟수몸무게 1번 - 패배 승리 패배 33.33% 1회 50kg 2번 승리 - 패배 패배 33.33% 0회 82kg 3번 패배 승리 - 승리 66.66% 2회 75kg 4번 승리 승리 패배 - 66.66% 0회 120kg 본문에 서술된 우선순위를 따라 [3,4,1,2] 를 return 합..