오늘 할 일
- LeetCode 데일리 문제 풀기
- 원티드 프리온보딩
오늘 배운 것
LeetCode 데일리 문제 풀기
- 오늘의 문제: 1822. Sign of the Product of an Array(https://leetcode.com/problems/sign-of-the-product-of-an-array/)
- 문제 조건
- signFunc(x)라는 함수가 있고, 다음을 반환한다.
- x가 양수이면 1 반환
- x가 음수이면 -1 반환
- x가 0이면 0 반환
- 정수형 배열 nums가 주어진다. product는 배열 nums에 있는 모든 값의 곱으로 둔다.
- signFunc(product)를 반환해라.
- signFunc(x)라는 함수가 있고, 다음을 반환한다.
- 문제 해결 과정
- 배열에 있는 값을 전부 곱한다.
- 그 다음 signFunc(product)를 구한다.
- 그런데, 배열을 정렬하고 0보다 작아지는 지점을 찾아서 음수의 개수를 세면 1인지 -1인지 판별이 가능하고, 0과 같아지는 경우가 있으면 0으로 반환해줄 수 있다. 그러면 시간복잡도가 더 줄어들지 않을까?
- 다시 해보자!
- 된다. 그런데, nums의 길이가 최대 1000이기 때문에 정렬할 필요 없이 탐색하면서 음수가 나올 때마다 1에 -1을 곱해주는 방식도 사용할 수 있다.
- 정답이 안나오는 코드(곱셈을 이어나가다보면 int의 표현 범위를 벗어난다. long으로 해도 마찬가지)
class Solution {
public int arraySign(int[] nums) {
long product = 1L;
for (int n : nums) {
product *= n;
if (product == 0)
break;
System.out.println(product);
}
return signFunc(product);
}
private int signFunc(long x) {
if (x > 0)
return 1;
else if (x < 0)
return -1;
else
return 0;
}
}
- 수정된 정답 코드
class Solution {
public int arraySign(int[] nums) {
int ans = 1;
for (int n : nums) {
if (n == 0)
return 0;
else if (n < 0)
ans = -ans;
}
return ans;
}
}
원티드 프리온보딩
- 강사님의 말씀 중에서 제가 느끼기에 중요한 것들 위주로 작성합니다.
- Load Balancer / Auto Scailing, Redis, CloudFront는 기본으로 설정한다고 생각하자.
- Redis는 무조건 잡고 가자. 개념이 어렵진 않으니 하루 잡고 쭉 파보자!
- VPC는 울타리(AWS)를 만들고 집(VPC)을 만들고 그 안에 방(subnet)이 있다. 인터넷을 통해 들어갈 수 있고, 인터넷과 VPC가 소통하도록 하기 위해 Internet Gateway를 통해서 들어간다.
- AWS API Gateway를 사용하면 가장 앞에서 요청을 받는다. 즉 외부에서 내부 서비스로 접근하는 지점!
- AWS ELB는 컴퓨팅 리소스의 부하를 분산시켜주는 아주 중요한 서비스이다. 사용률이 낮은 서버를 파악하는 방법은 RR(Round Robin) 방식을 통해 판단하고 분산 처리한다.
- AWS S3의 경우, 트리거 + AWS Lambda를 통해 이미지를 리사이징할 수도 있다. - 일단 스프링 부트 내장 기능으로 만들어서 해보고, 배우고 나서 만들어보자! → 프로젝트에서 적용해보기!_!
- AWS CloudFront의 장점은 속도는 높이고, 가격은 내리며, 서버 부하는 줄일 수 있다.
- CI/CD는 꼭 한번 만들어보자.
느낀점
- 리트코드 문제는 코드를 작성하다가 안되는 경우를 발견했습니다. 사실 이런 흐름은 코딩테스트에서도 절대 해서는 안되는 행동인데 또 이렇게 됐네요. 앞으로는 꼭 시간복잡도를 먼저 구하고, 값의 표현 범위까지 미리 고려해서 코드를 작성하는 습관을 들이겠습니다.
- 원티드 프리온보딩의 첫 날이었습니다. 최선을 다해 질문에 답변해주시는 강사님, 열정적으로 질문하는 수강생(+저 포함임ㅋ)들의 시너지가 잘 작용했으면 좋겠습니다.
내일 할 일
- LeetCode 데일리 문제 풀기
- 출근 전 자바의 정석 공부하기
- 코드스테이츠 - Cloud > AWS > S3 내용 노션에 정리하기
- Heart - 게시판 글 수정 및 삭제 로직 작성하기
- 운동하기 - 웨이트 트레이닝(컨디션 체크하고 하기)
'TIL' 카테고리의 다른 글
TIL_20230504 (1) | 2023.05.04 |
---|---|
TIL_20230503 (0) | 2023.05.03 |
TIL_20230501 (0) | 2023.05.01 |
TIL_20230430 (0) | 2023.04.30 |
TIL_20230429 (0) | 2023.04.29 |