다트 게임
문제 설명
고민
- 입력받은 문자를 쪼개 배열로 만듬
- 배열로 만들때 10이 1,0으로 쪼개짐
- 10을 t로 치환
- SDT는 object로 할 수도 있는데 그냥 배열의 위치값으로 더했음..사실 object로 해야 깔끔한데.
- num 배열을 다 더하는것으로 마무리
내 풀이
function solution(dartResult) {
dartResult = dartResult.replace( /10/g , 't' )
var darts = dartResult.split('');
var num = [];
var cnt = 0;
var index =-1;
var bonus = ['S','D','T']
while(true){
if( !isNaN( darts[cnt] ) || darts[cnt] == 't'){
index++;
if( darts[cnt] == 't'){
num[ index ] = 10;
}else{
num[ index ] = darts[cnt];
}
}else if( bonus.indexOf( darts[cnt] ) > -1 ){
num[ index ] = Math.pow( num[ index ] , bonus.indexOf(darts[cnt])+1 );
}else if( darts[cnt] == '*' ){
if( index > 0 ){
num[ index - 1 ] = num[ index - 1 ] * 2
num[ index ] = num[ index ] * 2
}else{
num[ index ] = num[ index ] * 2
}
}else if( darts[cnt] == '#' ){
num[ index ] = num[ index ] * -1;
}
cnt++
if( darts.length == cnt ) break;
};
return num.reduce(function(a,b){
return a+b;
});
}
같은 숫자는 싫어
문제 설명
고민 없음
내풀이
function solution(arr)
{
var pre;
return arr.filter(function(data){
if( data != pre ){
pre=data;
return true;
}
});
}
두 정수의 합
문제 설명
고민 없음
내풀이
function solution(a, b) {
var answer = 0;
var start = a < b ? a : b;
var stop = a > b ? a : b;
if( a==b) return a;
for( var i = start ; i <= stop ;i++ ){
answer+=i;
}
return answer;
}
가우스
function adder(a, b){
return (a+b)*(Math.abs(b-a)+1)/2;
}
나누어 떨어지는 숫자 배열
문제 설명
고민 없음
내풀이
function solution(arr, divisor) {
arr = arr.filter(function(data){
if( data%divisor == 0){
return true;
}
}).sort(function(a,b){
return a-b;
});
return arr.length != 0 ? arr : [-1];
}
문자열 내의 P , Y 갯수
문제 설명
고민 없음
내풀이
function solution(b) {
var befor = b.length;
b = b.toUpperCase();
var remove_p = befor - b.replace(/P/g,'').length;
var remove_y = befor - b.replace(/Y/g,'').length;
//원래 길이에서 p,y를 제거한거의 길이르 비교했는데.. 굳이 필요 없을듯
return remove_p == remove_y
}
function solution(b) {
b = b.toUpperCase();
var p = b.split('P').length;
var y = b.split('Y').length;
// 배열의 길이로 하면 편안.
return p == y
}