Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- game
- MongoDB
- OCR
- Nest.js
- class
- nodejs
- Bull
- cookie
- Express
- AWS
- jest
- Queue
- TypeScript
- react
- Sequelize
- typeORM
- Python
- Dinosaur
- GIT
- JavaScript
- 자료구조
- 정렬
- dfs
- mongoose
- 공룡게임
- MySQL
- 게임
- nestjs
- flask
Archives
- Today
- Total
포시코딩
[프로그래머스][Lv.1] 두 정수 사이의 합 본문
728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12912
내 풀이
# 1부터 n까지의 합을 구하는 방법에 대해 삼각형-사각형을 만들어 구하는 방법을
# n부터 m까지의 합을 구하는 방법에도 적용해볼 수 있다.
# 적용한다면 (b-a+1)*(b+a)/2
# 예외처리 1) a와 b가 같을 경우
# 예외처리 2) 위 공식은 b가 더 클 경우만 적용됨 a가 더 클 경우에 대해 고려
def solution(a, b):
if a == b:
return a
if a > b:
a, b = b, a
answer = (b-a+1)*(b+a)/2
return answer
그래도 예전에 Javascript로 풀 때 고민을 많이 했던 문제라 기억에 남아있었다.
제한조건을 보면
- a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
- a와 b의 대소관계는 정해져있지 않습니다.
이렇게 되어 있는데, for문으로 하나하나 더하는 방식 말고 다른 방식을 쓰라는걸 유추할 수 있고,
내가 테스트케이스로 고려 안한 a가 더 큰 경우에 대해서도 힌트를 주고 있었다.
제한조건을 잘 살펴보고 문제를 풀도록 하자.
다른 풀이
def solution(a, b):
if a == b:
return a
answer = (abs(b-a)+1)*(b+a)/2
return answer
대소관계 문제에 대해 abs()를 통해 해결해버린 코드다.
728x90
'자료구조알고리즘 > 문제풀이' 카테고리의 다른 글
[프로그래머스][Lv.1] 문자열 다루기 기본 (0) | 2022.12.22 |
---|---|
[프로그래머스][Lv.1] 문자열 내 마음대로 정렬하기 (0) | 2022.12.22 |
[프로그래머스][Lv.1] 핸드폰 번호 가리기 (0) | 2022.12.21 |
[프로그래머스][Lv.0] [1차] 비밀지도 (0) | 2022.12.20 |
[프로그래머스][Lv.0] 평행 - 작성중 (0) | 2022.12.19 |