프론트엔드✏️/코드캠프

알고리즘 - 예산, JadenCase문자열 만들기

당근먹는하니 2022. 6. 17. 16:09
728x90
반응형
// 테스트케이스 3번 실패

function solution(d, budget) {
  //1. 각 원소의 합을 구해보장
  console.log(d.reduce((acc, cur)=> acc+cur)); // 15
  // 2. 제일 작은 애부터 차례로 담아보자
  console.log(d.sort((a,b)=>a-b));
  
  let arr = d.sort((a,b)=>a-b);
  let count = 0;
  // 3. budget을 넘지 않는 범위에서 데려와보자
  for(let i = 0;  i < arr.length; ++i) {
	  if(answer+arr[i] <= budget) {
      answer += arr[i];    
    count = i;
    }
 }
  // 4. 쓸 수 있는 budget과 남아있는 예산 요청 확인
  // console.log('이 인덱스까지 지원해줬음 : ',count); // 
  // console.log(budget-answer); // 남은 돈
  // let money = budget-answer;

return count+1;
  
}

solution([1,3,2,5,4], 9);

 

댓글 : 소팅한 d의 첫 원소가 budget보다 큰 경우도 처리해 주니 해결됩니다.
참고하셨으면 좋겠습니다. 

 

와우!!!!! 

for문이 안돌아도 count +1해서 리턴해서 문제가 있었나봅니당.

function solution(d, budget) {
    var answer = 0;
  
  //1. 각 원소의 합을 구해보장
  console.log(d.reduce((acc, cur)=> acc+cur)); // 15
  // 2. 제일 작은 애부터 차례로 담아보자
  console.log(d.sort((a,b)=>a-b));
  
  let arr = d.sort((a,b)=>a-b);
  let count = 0;
  // 3. budget을 넘지 않는 범위에서 데려와보자
  if(arr[0]>budget) return 0;
  
  for(let i = 0;  i < arr.length; ++i) {
	  if(answer+arr[i] <= budget) {
      answer += arr[i];    
    count = i;
    }
 }
  // 4. 쓸 수 있는 budget과 남아있는 예산 요청 확인
  console.log('이 인덱스까지 지원해줬음 : ',count); // 
  console.log(budget-answer); // 남은 돈
	let money = budget-answer;

return count+1;
  
}

+5 1124점~~

항상 질문하기에서 힌트를 얻는다는 문제가...

 

 


 

// 시간초과 런타임 에러

function solution(s) {
	let answer = '';
  
  console.log(s[0].toUpperCase())
  
  console.log(s.split(" "))
  let arr = s.split(" ");
  let array = [];
  for(let i = 0; i<arr.length; ++i) {
    answer = '';  
    answer += arr[i][0].toUpperCase()
    answer += arr[i].slice(1,arr[i].length).toLowerCase();
    array.push(answer);
  }
  console.log(array)
  return array.join(" ");

}

공백 기준으로 쪼개고 배열 하나씩 들어가서 맨 앞글자와 그 뒤에 있는 글자를 대문자, 소문자로 넣어주고 그 배열을 다시 문자열로 합쳐주는 방식인데...안되네욤

 

공백이 여러개 들어갔을 때 undefined가 뜬다. 

'' <-에 대해서 toUpperCase()하니까 오류가 난 것

 

function solution(s) {
	let answer = '';
  let arr = s.split(" ");
  let array = [];
  for(let i = 0; i<arr.length; ++i) {
    answer = '';  
    if(arr[i]!=='') {
      answer += arr[i][0].toUpperCase()
    answer += arr[i].slice(1,arr[i].length).toLowerCase();
    }
    array.push(answer);
  } 
  return array.join(" ");
}

solution("3people unFollowed me");
solution("h  i  i");

 

 

헐 13점이나 준다!

 


멘토님 풀이

 

문자열은 이렇게 직접 변경하는 건 안된다.
replace를 사용해야 한다.
이럴 땐 변수값을 주고 변수값에 원본값 저장하고 그 원본을 대문자로 변경한 걸 넣어준다.

 

728x90
반응형