프로그래머스 7주차

이도현·2023년 5월 23일
0

UDR

목록 보기
18/22
  • 등수 매기기
function solution(score) {
    var answer = [];
    let array = [];
    let aver = new Map();
    
    for (let i=0;i<score.length;i++) {
        array.push((score[i][0] + score[i][1]) / 2)
    }
    
    let arr = [...array];
    
    arr.sort(function(a,b){
        return b - a;
    }); 
    
    for (let i=0;i<arr.length;i++) {
            aver.set(arr[i], i+1);
    }
    
    for (let i=0;i<array.length;i++) {
            answer.push(aver.get(array[i]));
    }
    
    return answer;
}

arr 배열을 sorting 하는 과정에서 점수가 같을 때 문제가 발생했다.
예를 들어 2등이 두 명이면 1,2,2,4,5... 이런식이여야 하는데
1,3,3,4,5... 같이 되었다. 주말에 해결 예정

  • 저주의 숫자 3
function solution(n) {
    let x = 0;
    
    for(let i = 1 ; i <= n ; i ++) {
        x++;
        while(x.toString().includes('3') || x%3 === 0) {
            x++;
        }
    }
    
    return x
}
  • 다항식 더하기
function solution(polynomial) {
    let arr = polynomial.split(' ');
    let arrX = [];
    let a = 0;
    let b = 0;
    let arrConstant = [];

    for (let i=0;i<arr.length;i++) {
        if (arr[i].toString().includes('x')) {
            arrX.push(arr[i]);   
        } else if (arr[i].toString().includes('+')) {
            continue;
        } else {
            arrConstant.push(arr[i]);
        }
    }
  
    for (let i=0;i<arrX.length;i++) {
        if (arrX[i] == 'x') {
            a = a + Number(arrX[i].replace('x', '1'));
        } else {
            a = a + Number(arrX[i].replace('x', ''));
        }
    }

    for (let i=0;i<arrConstant.length;i++) {
        b = b + parseInt(arrConstant[i]);
    }
    
    if (a == 0 && b == 0) {
        return(0);
    } else if (a == 0 && b != 0) {
        return(b);
    } else if (a != 0 && b == 0) {
        if (a == 1) {
            return("x");
        }
        return(a+"x");
    } else {
        if (a == 1) {
            return("x + "+b);
        }
        return(a+"x + "+b);
    } 
}


3개의 문제가 있는데 무엇인지 모르겠다. 더 많은 케이스 테스트로 실험해보거나 빠진 게 있는 지 확인 필요.

  • 안전 지대
function solution(board) {
    var answer = 0;
    
    for (let i=0;i<board.length;i++) {
        for (let j=0;j<board.length;j++) {
            if (i==0&&j!=0&&j!=board.length-1) {
              if (board[i][j-1]!=1&&board[i][j]!=1&&board[i][j+1]!=1&&board[i+1][j-1]!=1&&board[i+1][j]!=1&&board[i+1][j+1]!=1) {
                answer++;
              }
            } else if (i==0&&j==0) {
                if (board[i][j]!=1&&board[i][j+1]!=1&&board[i+1][j]!=1&&board[i+1][j+1]!=1) {
                  answer++;
                }
            } else if (i==0&&j==board.length-1) {
                if (board[i][j-1]!=1&&board[i][j]!=1&&board[i+1][j-1]!=1&&board[i+1][j]!=1) {
                  answer++;
                }
            } else if (i==board.length-1&&j!=0&&j!=board.length-1) {
                if (board[i-1][j-1]!=1&&board[i-1][j]!=1&&board[i-1][j+1]!=1&&board[i][j-1]!=1&&board[i][j]!=1&&board[i][j+1]!=1) {
                  answer++;
                }
            } else if (i==board.length-1&&j==0) {
                if (board[i-1][j]!=1&&board[i-1][j+1]!=1&&board[i][j]!=1&&board[i][j+1]!=1) {
                  answer++;
                }
            } else if (i==board.length-1&&j==board.length-1) {
                if (board[i-1][j-1]!=1&&board[i-1][j]!=1&&board[i][j-1]!=1&&board[i][j]!=1) {
                  answer++;
                }
            } else {
                if (board[i-1][j-1]!=1&&board[i-1][j]!=1&&board[i-1][j+1]!=1&&board[i][j-1]!=1&&board[i][j]!=1&&board[i][j+1]!=1&&board[i+1][j-1]!=1&&board[i+1][j]!=1&&board[i+1][j+1]!=1) {
                  answer++;
                }
            }
        }  
      }
    
    return answer;
}
  • 겹치는 선분의 길이
function solution(lines) {
  let answer = 0;
  let arr = new Array(201).fill(0);

  for (let i=0;i<3;i++) {
    for (let j=lines[i][0];j<lines[i][1];j++) {
      arr[j]++;
    }
  }

  for (let i in arr) {
    if (arr[i] > 1) {
      answer += 1;
    }
  }
  
  if (lines[0][1]==lines[1][1]&&lines[1][1]==lines[2][1]) {
      answer += 2;
  }  
  if (lines[0][1]==lines[1][1]||lines[1][1]==lines[2][1]||lines[0][1]==lines[2][1]) {
      answer += 1;
  }
    
  return answer;
}

테스트 케이스는 다 통과되나 실제 채점 결과에서는 오류가 많이 나왔다. 이유를 모르겠다..

profile
안녕하세요

0개의 댓글

관련 채용 정보