시간 복잡도(Time Complexity)와 공간 복잡도(Space Complexity) 설계를 하고 코딩을 한다음 기능이 잘 동작하는 것은 물론이지만 좋은 성능까지 보장받기를 원한다. 때문에 우리는 자료구조와 알고리즘을 분석하고 평가할 수 있어야 한다. 평가는 2가지로 할 수 있다. 하나는 속도에 관한것(시간 복잡도) 다른 하나는 메모리 사용량(공간 복잡도)이다. 옛날에는 하드웨어가 안좋았기 때문에 메모리 사용량을 많이 고려했었지만 지금은 하드웨어가 매우 좋기 때문에 메모리 사용 보다는 실행속도에 초점을 둔다. 실행속도를 평가하기 위해 조건마다 다르게 실행해가면서 수행시간을 평가할 수는 없다. 그래서 수행시간을 재기 위해 연산의 횟수를 통해서 알고리즘의 빠르기를 판단해야 한다. 그러기 위해서는 데이터의..
주식가격 문제 programmers.co.kr/learn/courses/30/lessons/42584 이 문제는 prices 리스트 각각의 값들이 몇초 동안 가격이 안떨어지고 있었는지 return 해주면 되는 문제 이다. return 은 prices의 리스트의 개수만큼 이므로 for문으로 풀 경우 0으로 초기화 해주면 쉽게 풀수 있다. [풀이] 1. Brute force def solution(prices): answer =[0] * len(prices) for i in range(len(prices)): for j in range(i+1, len(prices)): if prices[i]
지원되지 않는 문자집합 에러 원인과 해결방법 19C 업그레이드를 하고 나서 기존 서버에서 사용하던 툴을 실행하려고 했는데 orai18n.jar 가 필요하다는 에러가 나왔다. 이 에러 원인은 DB에 세팅된 인코딩 방식이 JDBC에서 지원하지 않는 인코딩 방식이라 에러가 나는 것이다. 즉 이 에러는 JDBC에서 지원하는 인코딩셋을 사용하냐 안하냐에 따라서 에러가 발생하는 것이다. ojdbc8.jar를 사용했고 DB인코딩 세팅이 K016MSWIN949인데 이건 JDBC에서 지원하지 않는 인코딩 방식이라 에러가 발생한다. 다른 서버에서는 UTF8AL32UTF8 이여서 에러가 발생하지 않는다. 이는 ojdbc8.jar에서 지원하는 인코딩 이여서 그런것이다. 에러 해결방법은 단순하게 orai18n.jar를 추가하면..
T2 인스턴스의 CPU크레딧이란 T2 인스턴스는 기본으로 주어지는 CPU성능과 더불어 여러가지 성능을 버스트 해서 순간적으로 성능이 확장된다. 다만 성능을 버스트 할때 CPU크레딧이 쌓이는데 T2 유형마다 주어진 CPU크레딧 수량이 있는데 그 수량을 다 사용되면 성능이 버스트 되지 않는다. [인스턴스 유형마다 주어지는 크레딧양] CPU크레딧은 시간마다 주어지는데 이것은 누적이 되고 누적가능한 CPU크레딧 수량을 넘어서면 더이상 누적 되지 않는다. 누적된 CPU크레딧은 인스턴스를 중지 시키면 초기화 된다. 만약 주어진 크레딧이 상관없이 성능을 계속해서 버스트 하고 싶다면 크레딧 사양을 무제한(Unlimited) 모드로 바꿔야 한다. 무제한 모드로 변경하는 방법은 EC2 인스턴스에서 수정화면에서 할 수 있다..
RDS Oralce은 그냥 쿼리문으로 session을 kill 하려고 했을 때 ORA-01031 권한 문제로 할 수 없다. RDS는 그래서 PL/SQL문으로 session kill을 해야 한다. [PL/SQL 스크립트] begin rdsadmin.rdsadmin_util.kill( sid => sid, serial => serial_number); end; [사용] 상태가 KILLED면 이건 아직 완전히 세션이 Kill된것이 아니므로 10분정도 기다려야 한다. 만약에 즉시 kill 하고 싶다면 serial 밑에 method => 'IMMEDIATE' 를 추가 하면 된다. docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.Common..
AWS 이용 중 AWS에 문의를 해야 할 때 문의 하는 방법은 간단하다. 콘솔 오른쪽 위세 지원 화살표를 클릭하고 지원센터로 들어가서 하면 된다. [지원센터 화면] 지원센터 화면에서 Create case 주황색 박스 버튼을 클릭하여 문의 할수가 있는데 문제는 Support Plan이 Basic이면 문의 할수가 없다. 한단계 이상 업그레이드를 해야 지원이 가능하다. 업그레이드 하는 방법은 왼쪽 메뉴 Support plan 오른쪽 파란색 글씨 change버튼을 클릭하여 넘어간 화면에서 업그레이드를 할 수 있다. 난 이미 Developer로 change해서 New Plan에 Developer이 없다. 가격은 Developer은 월 $29 Business 월 $100 Enterprise 월 $15000 기본적인..
EC2 인스턴스가 문제가 생길 때 다른 인스턴스로 데이터를 옮기는 방법은 인스턴스의 이미지를 생성하고 이 이미지로 똑같은 인스턴스를 생성하는 것이다. 인스턴스를 똑같이 하나 만들려면 인스턴스를 생성할 수 있는 정보와 그 인스턴스 안에 들어있던 데이터 2개가 있어야 한다. 이미지는 시스템 환경구성 이고, 데이터가 있는 저장공간을 볼륨이라 한다. 볼륨을 복사 하는걸 스냅샷 이라 한다. 먼저 아래는 이미지 생성방법이다. 이미지 생성과정 1. 이미지 생성할 인스턴스를 종료 2. 연결된 볼륨의 스냅샷을 가져옴 3. AMI를 생성하고 등록한 다음 인스턴스를 재부팅 만약 재부팅 안함에 체크를 함녀 이미지 파일의 무결성을 보장할 수 없다. 이미지 생성 버튼을 클릭하면 아래와 같이 이미지가 생성된다. 만들어지는 상태는 ..
LeetCode 문제 leetcode.com/problems/two-sum/ 문제는 Input nums 정수형 리스트와 이 리스트로 만들어야할 값 target이 있고 리스트에서 target을 만들 수 있는 인덱스 2개를 구하면 된다. 첫번째로 풀 수 있는 방법은 첫번째 인덱스와 뒤에있는 나머지 인덱스와 더해보고 두번째 인덱스와 그 뒤에 있는 인덱스와 더해보는 방법이 있다. 대부분 처음에 이 방법을 떠올릴 것이다. [풀이] 1. Brute Force class Solution(object): def twoSum(self, nums, target): for i in range(len(nums)): #i 다음 인덱스부터 loop for j in range(i+1, len(nums)): # 첫번째 인덱스부터 뒤..
클래스를 사용하는 방식은 자바와 같다 하지만 자바와는 다르게 첫번째 매개변수에 self가 들어간다. self는 클래스의 객체를 지칭하고 self를 통해서 속성을 정해준다. 자바에서의 this이다. 또 클래스 안에 __init__ 라는 초기화 메서드라고 있는데 이 메서드는 클래스의 객체가 만들어질 때 자동으로 호출돼서 그 객체의 속성을 정해줄수 있다. 즉 자바에서 생성자 역할을 하는 메서드이다. [예제1] class Human: def __init__(self, name, age): self.name = name self.age = age def info(self): print("나의 이름은", self.name, "나이는", self.age, "입니다") human1 = Human("짱구", "10") ..
코딩테스트 처음 준비하는 사람을 위한 풀이방법 프로그래머스 해시(Hash)문제 https://programmers.co.kr/learn/courses/30/lessons/42576 먼저 문제를 보고 어떻게 푸는게 좋을지 사람에게 설명할수 있어야 코딩이 가능하다. 바로 풀이방법을 생각 하는게 어렵겠지만 쫌만 생각하면 한사람 씩 비교하는 방법 즉 2중포문을 사용하여 해결하는 방법은 생각할것이다. 풀이 방법이 생각났다면 바로 코딩해보자 2중포문으로 풀었더니 효율성에서 전부 실패 하였다. 이는 제한사항에 걸리기 때문이다. 2중포문은 시간복잡도 N^2 이다. 제한사항에 참여한 선수는 1명 이상 10만명 이하인데 10만을 N에 대입하면 100억이 된다. 100억이면 무조건 시간 초과로 테스트에 통과하지 못한다고 보..
회사 네트워크 VPN 종류 PPTP로 연결을 해야 했는데 다른 사람은 되는데 나만 안되는 것이다. 한참을 빙돌아 아래 2개를 설정하니 VPN 해결을 완벽히 해결하고 회사 네트워크 ip도 이용할 수 있었다. 첫번째로 공유기 설정화면에서 트래픽 관리의 ALG 설정 창이 있는데 여기서 PPTP가 비활성으로 체크 돼 있었다. 그래서 죽어도 PPTP로 연결이 안되는 것이였다. 바로 활성으로 바꾸고 적용하였다. PPTP 활성을 하고 나서 VPN연결을 하였는데 회사 내부 ip는 접근 할수가 없었다. 그래서 회사 컴퓨터 원격 접속도 못하는 상황이였다. 해결은 네트워크 연결 속성에서 아래를 적용해 주면 된다. 위 설정화면으로 가는 방법은 네트워크 연결 창에서 속성을 들어가고 네트워킹 탭에 인터넷 프로토콜 버전4를 선택하..
파이썬 반복문 문법은 다른 언어와 다를게 없지만 특이하게 for문에서 for ~ else문이 있다. for ~ else문은 for문이 정상적으로 돌았을 경우에만 else문을 실행시킨다. for문 안에서 break로 나왔을 경우에는 실행을 안한다. 파이썬은 range() 함수를 이용해서 for문을 돌릴수 있는데 많이 사용한다. range() 함수는 순차적으로 정수리스트를 만들어 준다. range(10) 은 0부터 10 미만의 숫자를 포함하는 range 객체를 만들어 준다. 시작 숫자와 끝 숫자를 지정하려면 range(시작 숫자, 끝 숫자) 형태를 사용하는데, 이때 끝 숫자는 포함되지 않는다. [실습] ''' 반복문(for, while, break, continue) ''' # range 함수는 순차적으로 ..