본문 바로가기
Problem Solving/프로그래머스

[프로그래머스 | 파이썬 / 자바스크립트] 삼각형의 완성조건 (2)(코딩테스트 입문/ level 0)

by 청량리 물냉면 2023. 2. 23.
반응형
문제

https://school.programmers.co.kr/learn/courses/30/lessons/120868?language=python3 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

🐍파이썬
def solution(sides):
    return len([i for i in range(max(sides) - min(sides) + 1, max(sides) + 1)]) + len([i for i in range(max(sides) + 1, sum(sides))])

sides = [11, 7] 인 경우 --- min(sides) = 7, max(sides) = 11  // 새로운 선분 c

1️⃣ 11이 가장 긴 선분일 경우

  • 새로운 선분 c는 11과 같거나 11보다 짧아야 한다 --- range(  ? , max(sides) + 1)
  • c + 7은 11보다 길어야 한다. --- range(max(sides) - min(sides) + 1 , max(sides) + 1)

2️⃣ 새로운 선분 c가 가장 긴 선분일 경우

  • c는 11보다 길어야 한다 --- range(max(sides),  ?  )
  • c는 7 + 11보다 작아야 한다 --- range(max(sides), sum(sides))

3️⃣ 두 리스트 원소의 갯수를 더한다.

 

 

다른 풀이 방법

def solution(sides):
    return sum(sides) - max(sides) + min(sides) - 1

def solution(sides):
    return 2 * min(sides) - 1

sides = [11, 7] 인 경우 --- min(sides) = 7, max(sides) = 11  // 새로운 선분 c

1️⃣ 11이 가장 긴 선분일 경우

  • 새로운 선분 c는 11과 같거나 11보다 짧아야 한다 (c <= 11)
  • c + 7은 11보다 길어야 한다 (c <= 11 < c+7)  == (11-7 <= c)
  • 따라서 c의 범위는 (11-7 <= c < 11), c의 갯수는 7

2️⃣ 새로운 선분 c가 가장 긴 선분일 경우

  • 위와 동일하게 c의 갯수는 7

3️⃣ 새로운 선분 c와 11의 값이 동일한 경우

  • 1️⃣, 2️⃣에서 중복 체크되었으므로 -1

프로그래머스 풀이에 달린 답글로 정리한 내용. 잘 이해는 안 간다...

출처: https://school.programmers.co.kr/learn/courses/30/lessons/120868/solution_groups?language=javascript 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

🐥자바스크립트
function solution(sides) {
    var answer = 0;
    for(let i = Math.max(...sides) - Math.min(...sides) + 1; i <= Math.max(...sides); i++){
        answer++;
    }
    for(let i = Math.max(...sides) + 1; i < sides[0] + sides[1]; i++){
        answer++;
    }
    return answer;
}

Math.max(), Max.min() 메소드에 매개변수로 배열을 넣기

Math.max(), Math.min() 메소드에 매개변수로 배열을 전달할 경우, 배열 객체를 단일항목으로 인식하기 때문에 NaN이 반환된다.

const array = [7, 11];
console.log(Math.min(array)); // NaN

... 연산자를 이용하면 올바른 min, max값을 구할 수 있다.

const array = [7, 11];
console.log(Math.min(...array)); // 7

출처: https://sisiblog.tistory.com/256

 

[javascript] 자바스크립트 배열에서 최대/최소 구하는 방법 (min, max)

참고: https://stackabuse.com/javascript-get-min-and-max-element-of-array/ JavaScript를 쓰다보면 사용자에게 통계를 보여줘야 하거나 슬라이더의 경계를 설정할 경우 배열에서 최소 값과 최대 값을 알아내야 할 때

sisiblog.tistory.com

 

다른 풀이 방법

function solution(sides) {
    return Math.min(...sides)*2-1
}

파이썬의 <다른 풀이 방법> 2번과 동일

 

 

 

 

반응형