[Algorithm] 최소직사각형
·
Algorithm/Practice
문제 설명명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다.다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다.이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다.아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다. 가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) x 50(세로) 크기의 지갑으로 모든 명함들을 수납할 수 있습니다. 이때의 지갑 크기는 4000(=80 x 50)입니다. 모든 명함의 가로 길이와 세로 길이를 나타내는 ..
[Algorithm] 크기가 작은 부분 문자열
·
Algorithm/Practice
문제 설명숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요. 예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다. 문제 유형문자열 정수 변환문자열 부분 분할 의사코드문자열 P 길이를 저장할 변수(pSize)를 선언한다.문자열 P를 정수형으로 변환 후 변수(pNum)에 저장한다.[반복문] 문자열 T길이 - pSize 만큼 반복한다.문자열을 i인덱스에서 pSI..
[Algorithm] 삼총사
·
Algorithm/Practice
문제 설명한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다.이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다.예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사입니다. 따라서 이 경우 한국중학교에서는 두 가지 방법으로 삼총사를 만들 수 있습니다. 한국중학교 학생들의 번호를 나타내는 정수 배열 number가 매개변수로 주어질 때, 학생들 중 삼총사를 만들 수 있는 방법의 수를 return 하도록 solution 함수를 완성하세요. ..
[Algorithm] 이상한 문자 만들기
·
Algorithm/Practice
문제 설명문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다.각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요. 문제 유형문자열 치환 의사코드플래그 변수를 선언한다.[반복문] 문자열 길이만큼 반복한다.문자열의 요소가 공백(' ')이라면 플래그를 초기화(true)한다.플래그 값이 true라면 문자열의 요소를 대문자로 치환하고 다시 대입한다.플래그 값이 false라면 문자열의 요소를 소문자로 치환하고 다시 대입한다.플래그 값을 반전한다.결과값을 반환한다. 코드 작성#include #include using namespace std;string solution(string s) { ..
[Algorithm] 최대공약수와 최소공배수
·
Algorithm/Practice
문제 설명두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요.배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다.예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. 문제 유형최대 공약수최소 공배수 문제 아이디어최대 공약수는 유클리드 호제법으로 풀 수 있다.유클리드 호제법최대공약수 (GCD)"a를 b로 나눈 나머지가 r일 떄, a와 b의 최대 공약수는 b와 r의 최대공약수와 같다."두 수 (48, 18)48 % 18 = 12,18 % 12 = 6,12 % 6 = 0, 최대공약수는 6이다.최소공배수 (LCD)두 수를 최대공약수로 나눈 값과 같다.두 수 (48,..
[Algorithm] 직사각형 별찍기
·
Algorithm/Practice
문제 설명이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요. 문제 유형입력 처리반복문 코드 작성#include using namespace std;int main(void) { int row; int col; cin >> col >> row; for (int y = 0; y
[Algorithm] 행렬의 덧셈
·
Algorithm/Practice
문제 설명행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다.2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요. 문제 유형다차원 배열 순환 코드 작성#include using namespace std;vector> solution(vector> arr1, vector> arr2) { vector> answer; for (int y = 0; y temp; for (int x = 0; x
[Algorithm] 문자열 다루기 기본
·
카테고리 없음
문제 설명 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요.예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. 문제 유형문자열 길이 및 요소 비교 의사코드문자열 길이가 4 또는 6이 아닌 경우 false를 반환한다.문자열의 각 문자들 중 숫자가 아닌 경우 false를 반환한다.최종적으로 true를 반환한다. 코드 작성#include using namespace std;bool solution(string s) { int len = s.size(); if (len != 4 && len != 6) return false; for (char& ch : s) {..