분류 전체보기 76

[AWS] S3 Event -> SQS 사용방법

1. SQS 권한설정 { "Version": "2012-10-17", "Id": "example-ID", "Statement": [ { "Sid": "example-statement-ID", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "SQS:SendMessage" ], "Resource": "sqs의 arn을 여기에 붙여넣기 ", "Condition": { "ArnLike": { "aws:SourceArn": "여기에 버킷의 arn을 붙여넣기" }, "StringEquals": { "aws:SourceAccount": "aws account-id를 여기에 붙여넣기" } } } ] } 가이드 링크: http..

프로그래밍/aws 2023.11.02

[aws] 몇가지 기능 간단정리

RDS OLTP → 규모가 작은 데이터를 사용시 유용 OLAP → 매우 큰 데이터를 불러올 떄 사 RDS 백업 기능 AB →자동 백업 그날 생성된 스냅샷을 참고하여 생성 (약간의 지연 존재 가능) DB 스낵샷 → 원본 인스턴스를 삭제해도 스냅샷이 존재 (AB와는 다름) 원본 백업 엔드포인트 → original , 백업 엔드포인트는 → restored가 있다. [ ] Multi AZ 원래 있는 DB에 변화가 생길때 복제본이 만들어지며 자동으로 관리가 이루어짐 DB가 문제가 생기면 자동으로 다른 복제본을 사용 성능개선을 위해서 사용하는것은 아님 [ ] Read Replica 읽기 전용 복제본이 생성 읽는 작업시 효율성을 극대화 할 수 있음 최대 5개까지 생성 가능하다 Read Replica 의 Read Re..

프로그래밍/aws 2023.07.27

[Scala]Tuple, Array, List, Set

*Tuple 튜플은 원소가 변하지 않는다(불변성)을 가지고 있다 다양한 타입의 원소를 튜플 안에 넣을 수 있다. *예시 val res=(1,"team",true) //res: (Int, String, Boolean) = (1,team,true) println(res._1) // 1 println(res._2) // "team" println(res._3) // true /*위와 같이 튜플의 특정 원소 출력은 ._(원소번호)로 선택할 수 있다. (중요) 여기서 특이한 점은 파이썬과 다르게 첫번째 원소의 번호가 1번인것이다.*/ *Array 튜플과 다르게 원소를 변화시킬 수 있다. 모든 원소가 같은 타입을 가져야 한다. *예시 //기본적인 array 생성 방식 val a = new Array[String]..

[Scala]공부 시작 with udemy

Spark를 사용할때 python보다 scala가 더 빠르다는것을 원래 부터 알고는 있었지만 어떻게 도전해야 할지 막막했는데 마침 한이음에서 udemy 강의를 무료로 다 들을 수 있는 계정을 받을 수 있어서 도전해보려고 한다. 우선 스칼라의 기본 문법등을 공부하고 scala spark에 대한 내용도 포스팅 해볼 예정이다. 시험도 끝났으니 우선 시작 강의는 이 강의로 시작해서 Part2, 3 까지 다 듣고 정리해봐야겠다.

[백준 11003번] 최솟값 찾기

# 백준 11003번 링크 N개의 수 A1, A2, ..., AN과 L이 주어진다.Di = Ai-L+1 ~ Ai 중의 최솟값이라고 할 때, D에 저장된 수를 출력하는 프로그램을 작성하시오. 이때, i ≤ 0 인 Ai는 무시하고 D를 구해야 한다. www.acmicpc.net Key point 슬라이딩 윈도우 기법을 사용하여 하나씩 밀면서 비교한다 deque에 하나씩 넣어 현재 deque에 남은 숫자와 비교하여 더 작으면 보관한다 문제의 범위가 넘어가면 popleft를 사용하여 deque에서 뺀다. 문제 코드 from collections import deque N,L = map(int ,input().split()) A=list(map(int ,input().split())) mydeque= deque(..

[백준1253번] 좋다

# 백준 1543번 문제검색 링크 세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한 www.acmicpc.net Key point 투 포인트 알고리즘을 사용한다. 앞에서부터 하나씩 target으로 잡고 조건이 성립되는지 확인한다. 문제 코드 import sys input= sys.stdin.readline N=int(input()) numbers=list(map(int, input().split())) numbers.sort() cnt=0 for i in range(N): #앞에서부터 하나씩 확인 find=numbers[i] start=0 end=N-1 while s..

[알고리즘] 투 포인터

*투 포인터 특징 말 그대로 시작점, 끝점 두개의 위치를 지정하여 리스트를 탐색하는 방법 O(n)의 시간복잡도를 가지고있음 *투 포인터의 이동 원칙 sum > N : sum-=start; start++; sum < N : end++; sum+=end sum == N: sum+=end; cnt++ *예제 문제(백준 2018 수들의 합 5) # 백준 2018번 문제검색 링크 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한다. 이때, 사용하는 자연수는 N이하여야 한다. www.acmicpc.net *문제 코드 N=int(input()) start=1 en..

[백준 10986] 나머지 합

# 백준 10986번 문제검색 링크 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net Key Point (A+B)%C는 ((A%C)+(B%C))%C와 동일하다 결국 이 말은 특정 구간의 나머지 연산을 더해 구한 값과 구간합의 나머지 연산의 결과는 동일하다는 것이다 합배열 (sum[j]-sum[i])%M 은 결국 sum[j]%M - sum[i]%M과 동일함으로 결국 sum[j]%M=sum[i]%M의 결과가 나오게 된다 즉 합배열간 나머지가 동일한 것의 조합을 더해주면 된다. 기본적으로 구간합이 나머지가 0인경우도 더해준다 문제 코드 import sys input=sys.stdin..

[백준 11660] 구간 합 구하기 5

# 백준 11660번 문제검색 링크 N×N개의 수가 N×N 크기의 표에 채워져 있다. (x1, y1)부터 (x2, y2)까지 합을 구하는 프로그램을 작성하시오. (x, y)는 x행 y열을 의미한다.예를 들어, N = 4이고, 표가 아래와 같이 채워져 www.acmicpc.net Key Point 합배열을 만드는 방법은 sum_array[i][j]= sum_array[i-1][j]+sum_array[i][j-1]-sum_array[i-1][j-1]+numbers[i][j] 이다. *그림을 그려보면 이해하기 편하다 문제의 구간의 합을 구하기 위해서는 sum_array[x2][y2]-sum_array[x1-1][y2]-sum_array[x2][y1-1]+sum_array[x1-1][y1-1]의 공식을 사용하면..

[백준 11659]구간 합 구하기4

# 백준 11659번 문제검색 링크 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오. www.acmicpc.net Key Point 합배열을 미리 만들어서 큰 범위 - 작은 범위를 계산하는 방식으로 문제를 해결하면 되는 문제이다 문제 코드 import sys input=sys.stdin.readline N,M=map(int ,input().split()) sum_array=[0] numbers= list(map(int, input().split())) #숫자들을 담은 리스트 생성 for i in numbers: #합배열 생성 코드 tmp=i+sum_array[-1] sum_array.append(tmp) for _ in range(M): # 큰범위 - 작은범위 계산..