목록1단계 (38)
N
문제 설명 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers의 길이는 2 이상 100 이하입니다. numbers의 모든 수는 0 이상 100 이하입니다. 이중 for문을 이용하여 2개의 수를 더하여 더한 값이 check에서 false 이면 answer에 넣어주도록 한다. 그리고 check[sum]을 true로 바꿔주어 더한 결과가 중복적으로 들어가지 않도록 해주면 된다. 마지막에는 오름차순으로 정렬하여 리턴하면 끝! #include #include #include using namespace std; vector so..
string 형태로 점수가 들어온다. 가장 크게 분리해야 할 것은 1) 숫자 2) 알파벳('S', 'D', 'T') 3) 보너스('*', '#') 로 분리를 하여 점수를 합산해야 한다. score는 현재 처리하고 있는 점수, prev는 보너스 점수를 처리하기 위해 이전 점수를 저장한 변수이다. 1) 숫자 숫자는 0 ~ 10 사이의 점수로 dartResult[i] 번째에 있는 문자가 0 ~ 9 사이인지 판별한다. 그리고 dartResult[i + 1]이 0이면 점수는 10점이 되므로 score에 10을 저장 후 i++, 아니라면 0 ~ 9 에 해당하는 점수를 score에 저장한다. 2)알파벳('S', 'D', 'T) dartResult[i] 가 'S' or 'D' or 'T' 인지 판단한다. 'S'는 sc..
우선 실패율을 저장하기 위해 double형 벡터 rate를 선언하였다. 이중 for문을 이용..! 스테이지를 나타내는 i, stages의 인덱스를 나타내는 j 이다. user는 해당 스테이지를 클리어한 사람의 수를 나타내고, count는 i번째 스테이지에서 실패한 사람의 수를 나타낸다. 만약 count가 0이면 해당 스테이지에 도달한 유저가 없다는 뜻으로 0을 rate에 넣어주고, count가 0이 아니면 count / user 의 결과값을 rate에 넣어준다. 그리고 user -= count를 통해 유저의 수를 조정한다. 모든 스테이지의 실패율을 구했으면 실패율을 내림차순으로 나열했을 때의 스테이지 번호를 answer에 넣어주어야 한다. 약간(?) 헷갈릴 수 있는 부분이다. auto itr = max_..
문제의 핵심은 OR 연산을 이용하는 것..! arr1과 arr2의 i번째에 있는 두 수를 or연산을 통해 arr1[i] 번째에 다시 저장한다. 이때 string형 tmp를 선언한다. OR 연산을 통해 나온 결과를 이진법을 통해 해석해야 한다. 2로 나누었을 때 나머지가 0이면 ' '(공백)을 tmp에 넣어주고, 나머지가 1이면 '#'을 tmp에 넣어준다. 이때, tmp의 사이즈는 n이어야 한다..! while문을 통해 n만큼 문자를 넣어주고, answer에 넣기 전에 reverse를 통해 tmp를 뒤집어주었다. (tmp에 거꾸로 들어가기 때문에 바로잡기 위해 reverse() 함수를 사용하였다..!) 이 문제에서 많이 틀리는 부분이 아마 해석한 결과의 길이와 n이 같지 않아서일 것 같다..! n의 길이만..
sort를 이용하여 푸는 문제..! 우선 을 include 하여 sort를 쓰도록 하자..! sort는 기본적으로 오름차순 정렬이기 때문에 sort(d.begin(), d.end());만 써주면 된다..! 그리고 int형 변수 sum을 선언한다. for문을 통해 sum + d [i]가 budget보다 작으면 더하여 answer++을 해주고, 더한 값이 budget보다 크다면 바로 answer를 리턴한다..! easy..! #include #include #include #include #include using namespace std; int solution(vector d, int budget) { int answer = 0, sum = 0; sort(d.begin(), d.end()); for(in..
이중 for문 사용에 관한 문제다...! 아마 c언어를 배울 때, 특히 for문에 대해 배울 때 많이 봤던 문제일 수도 있다..! 바로 이중 for문을 이용하여 별표를 찍는 것..! 많이 어렵지 않아서 설명도 딱히 필요 없을 것 같다..! 만약 어렵게 느껴진다면 a와 b를 작은 수로 잡아서 직접 손으로 따라가는 것도 괜찮은 방법 같다..! #include using namespace std; int main(void) { int a; int b; cin >> a >> b; for(int i = 0; i < b; i++) { for(int j = 0; j < a; j++) { cout
우선 tmp 변수를 선언하여 x를 대입한다. tmp는 계속해서 똑같은 값(x)을 더해줄 때 사용한다. 왜냐하면 for문에서 x의 값을 넣었을 때, x += x를 하면 x = 2일 때, x = 2, 4, 8, 16... 이 되기 때문이다..! 그래서 변하지 않는 tmp를 이용하여 x에 더해준다..! #include #include using namespace std; vector solution(int x, int n) { vector answer; int tmp = x; for(int i = 0; i < n; i++) { answer.push_back(x); x += tmp; } return answer; }
행렬의 덧셈을 구현하는 문제..! arr1과 arr2의 size는 같으니까 아무거나 사용해도 상관없다..! 첫 번째 for문에서 int형 벡터 tmp와 int형 변수 sum을 선언해준다. sum은 행렬의 덧셈을 저장해주는 변수이고, tmp는 각 행의 덧셈을 넣어주는 변수이다. 이중 for문을 사용하여 ( [0, 0] + [0, 0] ) ( [0, 1] + [0, 1] ) ( [1, 0] + [1, 0] ) ( [1, 1] + [1, 1] ) 이렇게 계산을 한다. 문제의 첫 번째 예시를 통해 tmp에 대해 자세하게 설명하자면 i = 0, j = 0 일 때, sum = 4 -> tmp에 4 저장. i = 0, j = 1 일 때, sum = 6 -> tmp에 6 저장. 이렇게 두번 돌게 되면 tmp에는 (4,..