Programming 14

Python 자료형 별 메서드 시간 복잡도 정리

list Index l[i] O(1) 인덱스로 값 찾기 Store l[i] = 0 O(1) 인덱스로 데이터 저장 Length len(l) O(1) 리스트 길이 Append l.append(5) O(1) 리스트의 맨 뒤에 데이터 저장 Pop l.pop() O(1) 리스트의 맨 뒤의 데이터 pop Clear l.clear() O(1) 리스트 초기화 Slice l[a:b] O(b-a) 슬라이싱 되는 길이에 비례 Extend l.extend(...) O(len(...)) 확장되는 길이에 비례 Construction list(...) O(len(...)) 리스트 길이에 비례 check ==, != l1 == l2 O(N) 전체 리스트가 동일한지 확인 Insert l[a:b] = ... O(N) 데이터 삽입 Del..

Programming/Python 2021.01.10

Python list 원소 입력 : 입력 시 원소 증감하기

알고리즘 문제를 풀다보면 원소의 시작이 1부터 되는 경우가 종종 있다. 리스트에서 인덱스는 0부터 시작하므로, 입력을 받을 때 부터 1을 빼고 리스트에 저장하려면 lambda를 사용하면 된다 # 입력 예시 # 1 2 3 4 5 6 # 기존 방식대로 입력을 받아서 1씩 빼주는 경우 mylist = list(map(int, input().split())) for i in range(len(mylist)): mylist[i] -= 1 print(*mylist) # 0 1 2 3 4 5 # lambda를 활용하여 입력 받을 때 부터 1을 빼줌 mylist = list(map(lambda x : int(x)-1, input().split())) print(*mylist) # 0 1 2 3 4 5

Programming/Python 2021.01.05

Python 백준 문제풀이 시 입출력 정리

input() : 한 줄의 문자열을 입력 map() : 리스트의 모든 원소에 각각 특정한 함수를 적용할 때 사용 # 공백을 기준으로 구분된 데이터를 입력 받을 떄 data = list(map(int, input().split())) # 공백을 기준으로 구분된 데이터가 많지 않다면 a, b, c = map(int, input().split()) 파일 입출력 sys.stdin = open("input.txt", "r") 좀 더 빠르게 입력 받기 sys.stdin.readline() 사용 단, 입력 후 엔터가 사용되므로 rstrip() 를 함께 사용 import sys # 공백으로 구분된 2개 숫자 입력 받기 N, M = map(int,sys.stdin.readline().split()) # 2차원 리스트 입..

Programming/Python 2021.01.03

Python 라이브러리 정리

Counter 리스트와 같은 반복 가능한 객체가 주어졌을 때, 내부의 원소가 몇번 등장했는지 반환 from collections import Counter counter = Counter(['red', 'red', 'blue', 'green', 'blue']) print(counter['blue']) print(counter['red']) 리스트에서 맨 뒤 원소부터 확인 하고 싶을 때 음수인덱스 사용 arr = [1,2,3,4,5,6] print(arr[::-1]) # 맨 뒤에서 부터 1칸씩 print(arr[1:5:2]) # index 1부터 4까지 2칸 간격으로 진법 변환 num = '4213&..

Programming/Python 2021.01.03

Python 파이썬 기본 자료형 정리 - List

기본 문법 정리 List C++의 vector, Java의 array list와 유사 초기화 : 대괄호 사용 [ ] 인덱스 접근 가능 a = [1, 2, 3, 4] print(a[3]) # 실행결과 4 # 크기가 n이고 모든 값이 0인 1차원 리스트 초기화 n = 10 a = [0]*n print(a) # 실행결과 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] Indexing 양의 정수( 맨 앞부터 시작), 음의 정수 (맨 뒤부터 시작, 맨 뒤는 -1)로 인덱싱 가능 a = [1,2,3] print(a[-1]) # 실행결과 3 연속적인 위치를 가져올 떄는 슬라이싱을 사용 : 대괄호 안에 콜론(:)을 넣어서 시작인덱스와 끝 인덱스 설정 끝 인덱스는 실제 인덱스보다 1을 더 크게 설정 a = [1,..

Programming/Python 2020.12.25

C++ 문자열 파싱, 비교

프로그래머스에서 문제를 풀다보면 입력이 문자열로 주어지는 경우가 많다. C++은 문자열 관련 기능이 다른 언어에 비해 빈약하기 때문에 정리해두자 문자열 비교 compare 함수 str1.compare(str2)의 결과값이 -1 : str1이 str2보다 사전적으로 앞에 있음 0 : str1과 str2는 같은 문자열임 1 : str1이 str2보다 사전적으로 뒤에 있음 또한 두 문자열의 부분 문자열을 비교할 수 있다. str1의 0번째 인덱스부터 길이가 2인 문자열과 str2의 0번째 인덱스부터 길이가 2인 문자열 끼리 비교. 리턴값은 위와 같음 str1 = "HelloWorld" str2 = "HelloMyWorld" str1.compare(0,2,str2,0,2); 대소문자 전환 transform 함수..

Programming/C++ 2020.09.12

#1 Azure VM, Tomcat, Java, Mysql 설치 및 Tomcat 실행

Azure VM 설치환경 : Ubuntu 18.06 VM의 리눅스 서버를 하나 생성한다. 이미지 크기나 CPU, RAM 등은 기본으로 세팅 되있는걸 쓴다. 사용자 id와 pw를 설정하고 VM을 생성한다. 네트워킹 기본적으로 SSH 포트가 열려있을 것이다. 여기에 추가적으로 내가 사용하는 포트는 `8080(Tomcat)`, `3306(MySQL)`, `8443(Tomcat HTTPS)`이 필요하므로 인바운드 포트 규칙에서 추가한다. AllowVnetInBound, AllowAzureLoadBalancerInBound, DenyAllInBound 포트는 건드리지 않고 냅둔다. VM 생성과 네트워킹이 완료되면 `putty`, `xshell` 등의 프로그램을 사용해서 VM에 접속한다. 나는 [MobaXterm]..

Programming/Java 2020.09.02

#0 프로젝트 개발 환경 (Tomcat 9.0, Mysql 5.7, Azure Cloud)

약 한 달에 걸쳐 진행한 프로젝트를 정리하는 목적으로 하는 포스팅이다. 작업을 하며 정리한 내용과 실수로 많이 헤맸던 부분들, 시간을 많이 잡은 부분을 중점적으로 정리할 예정이다. 처음 생각했던 것 처럼 다 하고나니 많이 어려운 것도 아니었고, 설정만 잘 해주면 되는 작업들이었다. 많은 블로그 글을 참고하며 하다보니, 설정이 다른 부분들로 인해 어려움을 많이 겪었다. 이번 프로젝트는 서버를 만드는데 기본적인 과정이기 때문에 정리하면 좋을것 같다. 단순히 문제상황에 대한 것만이 아닌, 시행착오를 겪으며 알게 된 내용도 같이 정리하면 좋을 것 같다. 개발 환경 OS : Ubuntu 18.04 Cloud Service : Azure Database : mysql 5.7 Java : jdk1.8.0_261 Ja..

Programming/Java 2020.08.31