Algorithm 15

programmers 행렬의 곱셈

programmerslevel2 행렬의 곱셈문제 설명위 이미지를 클릭하면 해당 문제로 이동합니다.#include #include using namespace std;vector> solution(vector> arr1, vector> arr2) { vector> answer(arr1.size()); for(int i = 0; i 해결 과정처음에 문제를 보고 두 행렬의 같은 인덱스의 각 항끼리의 곱을 새로운 배열에 저장하여 행렬의 곱을 계산할 때 사용하려고 했었다. 해당 방법으로 해결하였는 데, 생각보다 메모리 사용량과 시간이 오래 소용되어서 다시 생각해보니 굳이 곱의 값을 배열에 저장할 필요가 없다는 것을 알았다. 위의 코드는 배열에 새로이 저장하지 않고 바로바로 사용하는 코드이다. 확연하게 ..

programmers 영어 끝말잇기

programmerslevel2 영어 끝말잇기위 이미지를 클릭하면 해당 문제로 이동합니다.#include #include #include using namespace std;vector solution(int n, vector words) { vector answer; unordered_map word_table; int wrong ,flag = 1; word_table.insert({words[0], 1}); for(int i =1; i해결 과정위의 코드는 algorithm라이브러리의 find함수를 이용해 해결한 후 다른 사람의 풀이에서 힌트를 얻어 unordered map을 추가로 활용한 코드이다. 제한 사항에서 단어들의 수가 100이하이기 때문에 배열 탐색을 아무리 많이해..

programmers N개의 최소공배수

programmerslevel2 N개의 최소공배수문제 설명주어진 숫자들의 최소공배수를 구하는 문제이다.#include #include #include using namespace std;int solution(vector arr) { int answer = 1; vector prime_num; for(int i = 2; i cnt(prime_num.size(), 0); for(int num : arr){ vector temp(prime_num.size(), 0); for(int i = 0; i해결 과정최소공배수를 어떻게 구해야 할지 헤매었다. 생각해낸 방법은 주어진 각각의 수들의 약수 중 소수의 개수를 구하고 그 소수들의 개수의 최대값끼리 곱하면 최소공배수가..

programmers 구명보트

programmerslevel2 구명보트문제 설명2인용 구명보트를 사용하여 다양한 몸무게의 사람들을 모두 탈출시키기 위해 필요한 최소한의 구명보트의 개수를 구하는 문제입니다.#include #include using namespace std;int solution(vector people, int limit) { int answer = 0; sort(people.begin(), people.end()); int i = 0, j = people.size()-1; while(j>=i){ if(people[i]+people[j]>limit){ answer++; j--; } else{ answe..

programmers 다음 큰 숫자

programeerslevel2 다음 큰 숫자문제 설명자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다.조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다.조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다.조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다.예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다.자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요.#include #include #include using namespace std;// 주석 무시int convert(int a){ string arr=""; ..

programmers 이진 변환 반복하기

programmerslevel2 이진 변환 반복하기문제 설명문자열 s에서 0을 제거하고 남은 문자열의 길이를 2진법으로 변환하는 과정을 반복하여 s가 "1"이 될 때까지 변환 횟수와 제거된 0의 총 개수를 구하는 문제입니다.#include #include using namespace std;pair re_convert(pair cnt_pair, string str){ int temp_size = 0; string temp = ""; for(char i : str) i == '1' ? temp_size++ : cnt_pair.second++; for(int i = 17 ; i>=0; i--){ //2^17==131,072 int digit = (temp_size>>i)&..

C++ <cctype>과 삼항연산자

C++ 과 삼항연산자프로그래머스에서 JadenCase문자열을 만들면서 다른사람의 풀이를 통해 알게 된 내용 중 cctype 라이브러리와 삼항연산자에 대한 내용이다.주요 기능문자 분류isalpha: 알파벳 문자인지 확인 (a-z, A-Z)isdigit: 숫자 문자인지 확인 (0-9)isalnum: 알파벳 또는 숫자 문자인지 확인islower: 소문자 알파벳 문자인지 확인isupper: 대문자 알파벳 문자인지 확인isspace: 공백 문자인지 확인 (스페이스, 탭, 줄바꿈 등)ispunct: 구두점 문자인지 확인isxdigit: 16진수 숫자 문자인지 확인 (0-9, a-f, A-F)isprint: 출력 가능한 문자인지 확인isgraph: 출력 가능하고 공백이 아닌 문자인지 확인iscntrl: 제어 문자인..

C++ 2024.07.03