일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코딩테스트 스터디
- 완전탐색
- Algorithm
- 백트래킹
- JavaScript
- 제로베이스
- 구현
- socket
- c#
- 구조체
- React
- 메모리 배리어
- BFS
- N과 M(2)
- map
- dfs
- 문자열&연산자
- 자바스크립트
- MemoryBarrier
- 백준
- 멀티스레드
- Server
- 프로그래머스
- 프론트엔드 스쿨
- 코딩테스트
- leetcode
- C++
- 서버
- 제로베이스 프론트엔드 스쿨
- 알고리즘
- Today
- Total
Written
69. Sqrt(x) / 70. Climbing Stairs / 8. String to Integer (atoi) / 코딩테스트 스터디 문제풀이 모음 (Leetcode) 본문
69. Sqrt(x) / 70. Climbing Stairs / 8. String to Integer (atoi) / 코딩테스트 스터디 문제풀이 모음 (Leetcode)
steeringhead 2023. 2. 28. 17:58https://leetcode.com/problems/sqrtx/
Example 1:
Input: x = 4
Output: 2
Explanation: The square root of 4 is 2, so we return 2.
Example 2:
Input: x = 8
Output: 2
Explanation: The square root of 8 is 2.82842..., and since we round it down to the nearest integer, 2 is returned.
Constraints:
- 0 <= x <= 2^31 - 1
루트의 값을 알 수 있는 내장함수를 사용하지 않고 주어지는 x값의 소수부분을 제외한 정수 값을 반환하는 문제입니다.
내장함수를 사용할 수 없기 때문에,, 학생 때 비슷한 문제를 풀던 것 처럼 앞뒤로 정수로 떨어지는 숫자들을 찾아서 답을 찾아내는 아이디어를 사용하면 됩니다 ! ( EX. 루트8 은 루트4와 루트9 즉 2와 3 사이에 들어가기 때문에 2.xxx일테고 그렇기 때문에 2라고 답을 만들어 낼 수 있는 것입니다!)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
/**
* @param {number} x
* @return {number}
*/
var mySqrt = function(x) {
if (x <= 1){
return x;
}
for (let i=1;i<=x;i++){
if( i*i > x){
return i-1;
}
}
};
|
cs |
https://leetcode.com/problems/climbing-stairs/
Example 1:
Input: n = 2
Output: 2
Explanation: There are two ways to climb to the top.
1. 1 step + 1 step
2. 2 steps
Example 2:
Input: n = 3
Output: 3
Explanation: There are three ways to climb to the top.
1. 1 step + 1 step + 1 step
2. 1 step + 2 steps
3. 2 steps + 1 step
Constraints:
- 1 <= n <= 45
다이나믹 프로그래밍 문제입니다. n=4 , n=5일 때 경우의 수를 계산해보면 앞의 두 경우의수를 더한게 그 다음 n값의 경우의 수와 같은 규칙이 있습니다(피보나치 수열). 규칙이 없다면 알고리즘을 구현하기가 상당히 복잡해 보여서, 반드시 규칙이 있을거라고 생각하고 찾아보려고 했는데 피보나치 수열이라고는 생각을 못했습니다. 풀이는 solution에 나와있는 코드를 참고하였습니다 !
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
|
/**
* @param {number} n
* @return {number}
*/
//다이나믹 프로그래밍 문제.
var climbStairs = function(n) {
if (n<=1){
return 1;
}
if (n===2){
return 2;
}
let first = 1;
let second = 2;
let third;
for (let i=3;i<=n;i++){
third = first + second;
first = second;
second = third;
}
return third;
};
|
cs |
https://leetcode.com/problems/string-to-integer-atoi/
주어지는 문자열을 조건에 맞게 32비트 범위 안의 정수로 변환하는 문제입니다.
문제가 조금 복잡하고 특이했습니다.. 일단 주어지는 문자열에서 숫자만 추출하는 문제인데, 문자가 먼저나오고 숫자가 뒤에 나오는 경우는 0을 리턴하게끔 하라는 조건이 존재합니다. 예를들면 "4193 with words"는 조건에 따르면 4193이라는 정수로 반환이되고, "words with 4193"이 입력이라면 0을 반환해야 합니다.
또한 하나더 신기한 점을 발견했는데 , parseInt함수에 "4193 with words" 을 인자로 넘기면 4193을 반환해주고,
"words with 4193"을 입력하면 NaN을 반환합니다. 둘다 숫자가 포함된 문자열인데, 위치에 따라 리턴값이 다르다는 걸 배웠습니다. 풀이는 solution에 있는 다른 분의 코드를 참고했습니다.
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
|
/**
* @param {string} s
* @return {number}
*/
var myAtoi = function(s) {
let parseS = parseInt(s);
const min = -1*2**31;
const max = 2**31 -1;
if(parseS<min){
parseS = min;
}
if(parseS>max){
parseS = max;
}
if(isNaN(parseS) === true){
return 0;
}
return parseS;
};
|
cs |
'알고리즘 문제풀이' 카테고리의 다른 글
백준 / 15649 / N과 M(1) / C++ (0) | 2023.05.05 |
---|---|
백준 / 2231 / 분해합 / C++ (0) | 2023.05.04 |
leetcode / Unique Binary Search Tree II / JavaScript (0) | 2023.02.26 |
leetcode / 7. Reverse Integer / JavaScript (0) | 2023.02.21 |
leetcode / 67. Add Binary / JavaScript (0) | 2023.02.21 |