티스토리 뷰
title: "튜플"
category: 프로그래머스[Level-2]
tags: [C++, JavaScript, 프로그래머스]
date: "2021-01-23"
문제 링크
C++
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
bool cmp(vector<int> a, vector<int> b){
return a.size() < b.size();
}
vector<int> solution(string s) {
vector<int> answer;
s.erase(s.begin()); // '{' 제거
s.pop_back(); // '}' 제거
vector<vector<int>> tuples;
vector<int> v;
string str="";
for(char ch: s){
// split
if(ch>='0'&&ch<='9') str+=ch;
else if(ch==','&&!str.empty()){
v.push_back(stoi(str));
str="";
}
else if(ch=='}'){
v.push_back(stoi(str));
str="";
vector<int> temp;
swap(v, temp);
tuples.push_back(temp);
}
}
sort(tuples.begin(), tuples.end(), cmp); // length로 정렬
int prev = tuples[0][0];
answer.push_back(prev);
for(int i=1; i<tuples.size(); i++){
int curr = 0;
for(int num: tuples[i]){
curr += num;
}
answer.push_back(curr-prev); // 현재 합-이전 합
prev = curr;
}
return answer;
}
JavaScript
function solution(s) {
var answer = [];
JSON.parse(s.replace(/[{]/g, "[").replace(/[}]/g, "]")) // array 파싱
.sort((a, b) => {
return a.length - b.length; // length로 정렬
})
.reduce((prev, value) => {
let sum = 0;
for (const i in value) {
sum += value[i];
}
answer.push(sum - prev); // 합 차이로 push
return sum;
}, 0);
return answer;
}
728x90
반응형
'Programmers Solutions > Level-2' 카테고리의 다른 글
[프로그래머스] 조이스틱 (0) | 2021.02.01 |
---|---|
[프로그래머스] 가장 큰 수 (0) | 2021.02.01 |
[프로그래머스] 수식 최대화 (0) | 2021.02.01 |
[프로그래머스] 괄호 변환 (0) | 2021.02.01 |
[프로그래머스] 큰 수 만들기 (0) | 2021.02.01 |
댓글