⚙️ 알고리즘/코딩테스트 준비 10

[Python] 코딩테스트에 필요한 문법 정리

문자열/컬렉션 문자열/배열 (튜플도 문법 거의 똑같음) ✅ 배열 슬라이싱 https://dojang.io/mod/page/view.php?id=2208 - list[시작인덱스:끝인덱스:증가폭] 시작인덱스, 증가 폭 생략 시 디폴트는 0 끝 인덱스 -> 끝인덱스 -1 - 시작 인덱스와 끝 인덱스가 같으면 빈 리스트를 반환함 >>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90] >>> a[4:7] # 인덱스 4부터 6까지 요소 3개를 가져옴 [40, 50, 60] >>> a[1:1] # 인덱스 1부터 0까지 잘라서 새 리스트를 만듦 [] >>> a[1:2] # 인덱스 1부터 1까지 잘라서 새 리스트를 만듦 [10] >>> a[4:-1] # 인덱스 4부터 -2까지 요소 5개를 ..

[알고리즘] 백트래킹 유형 정리

백트래킹 문제 풀때 유형별 풀이가 너무 헷갈려서 정리하는 포스팅 1. 단순 순열(순서가 다르면 겹치는게 있어도 다른 케이스로 간주, ab != ba) - 모든 케이스를 다 돌기는 해야하는데, 현재 루프에서 이미 방문한 노드는 제외해야할 때 N과 M (1) 스도쿠 - 1부터 9를 중복없이 채운다는 전제하에 1 9 와 9 1은 다른 케이스일 수 밖에 없음. 여기에 행/열/사각형에 중복이 없는지에 대한 조건 추가하는 응용만 제외하면 아래 원리와 동일 알고리즘 틀 // 구현해놓은 Permutation 연습 func permute(_ nums: [Int], _ targetNum: Int) -> [[Int]] { var result = [[Int]]() var visited = [Bool](repeating: fa..

[알고리즘] 시간복잡도, 코딩테스트 알고리즘 요약 정리

문제를 보면 입력 데이터의 개수를 보고 시간복잡도부터 계산하자 (코테의 가장 기본) 1초 = 1억번 연산 임을 인지하고 이를 토대로 시간복잡도를 계산하여, 시간초과가 나지 않을 적절한 알고리즘을 선택해야함 보통 프로그래머스의 경우 명시를 해두지 않았다면 제한 시간이 10초 라고 한다. O(1): 입력 데이터의 개수와 상관없이 항상 상수의 시간을 가지는 알고리즘 (ex. 배열의 마지막 수 꺼내오기, 해시 테이블 삽입/삭제/검색) O(logn): 크기가 커지면 커질수록 처리 시간이 절반으로 줄어드는 알고리즘 (ex. 이분탐색, 힙(우선순위 큐)) O(n): 입력 데이터의 개수만큼 시간이 소요되는 알고리즘 (ex. for문 1개, 배열/문자열 탐색, 배열/문자열 재정렬, set()으로 중복 제거) O(nlog..

[Swift] 코딩테스트에 필요한 문법 총정리

문자열/컬렉션 문자열/배열 ✅ 배열 초기화 https://developer.apple.com/documentation/swift/array // Shortened forms are preferred var emptyDoubles: [Double] = [] var emptyDoubles = Array() var emptyDoubles = [Double]() // The full type name is also allowed var emptyFloats: Array = Array() var numbers = [1, 2, 3, 4 ,5] var answer = Array(numbers[1...3]) print(answer) // Prints "[2, 3, 4]" var ex_4 = Array(1...10) /..

[Swift/Python] 코테 준비에 알아두면 좋을 사항 / 코드

Swift, Python 둘다 준비해서 코드가 섞여있습니다. Swift ✅ 시간초과가 발생할 경우, 아래를 살펴보자. 1) 고차함수를 많이 사용하지는 않았는가? 반복문 안에 고차함수가 들어가있지는 않은가? 2) 배열 대신 튜플을 사용할 수 있는가? 3) 수의 범위가 큰데 반복문을 2-3개씩 돌린다거나 하지는 않는가? -> 시간복잡도 확인 4) 백준이고, 위 문제 모두 아니고 알고리즘이 맞는것 같은데 시간초과가 난다..? 하면 백준 특유의 시간초과 문제일 수 있음. - 이럴땐 FileIO 클래스를 사용하자. (라이노님 FileIO 클래스 외에도 더 빠른 FileIO가 있다고 함) -> 하지만 백준에서만 해당 파일을 사용할 일이 있고 코딩테스트에서는 쓸일이 없어서 .. 그냥 파이썬 코드 그대로 옮겨보고 맞는..

[Python 문법] 주요 라이브러리 정리

https://doc.python.org/ko/3/library/index.html 파이썬 표준 라이브러리 — Python 3.9.1 문서 파이썬 표준 라이브러리 파이썬 언어 레퍼런스 는 파이썬 언어의 정확한 문법과 의미를 설명하고 있지만, 이 라이브러리 레퍼런스 설명서는 파이썬과 함께 배포되는 표준 라이브러리를 설명합 docs.python.org 여기서 추가적으로 필요한 기능이 있다면 찾는 습관을 기르자! sum() 함수 : iterable 객체(반복 가능한 객체, 즉 리스트, 사전 자료형, 튜플 자료형 등)가 입력되었을때 모든 원소의 합 반환 result = sum([1, 2, 3, 4, 5]) print(result) //15 min() 함수/max() 함수 : 파라미터가 2개이상 들어왔을때 가장 ..

[Python 문법] 함수, 입출력

함수 def 함수명(매개변수): 코드 return 반환할 값 python에서는 매개변수를 직접 지칭하여 넣을 수 있으며, 이 때 순서가 달라도 상관없다는 점이 특징이다. def add(a, b): print("더한 결과", a+b) add(b=7, a=3) //더한 결과 10 변수를 전역변수로 만들고자할 경우 global 을 변수명 앞에 붙인다. 파이썬에서는 람다 표현식을 사용할 수 있다. (lambda 매개변수 : 표현식(매개변수의 값)) 입출력 입력 input() -> 문자열을 입력받으므로 다른 자료형으로 사용하려고 할때, 그 자료형으로 변환해줄 필요가 있음. 문자열을 띄어쓰기로 구분하여 정수 자료형의 데이터로 저장하는 코드 list(map(int, input.split())) ★ ※ map(적용시킬..

[Python 문법] 조건문, 반복문

조건문 python의 조건문은 if ~ elif ~ else pass문 조건문의 값이 참이라고 해도, 아무것도 처리하고싶지 않을때 조건문을 간략하게 표현하는 예시 //들여쓰기 하지않고 한줄로 표현하는 예시 score = 85 if score>=80 : result="Success" else : result="Fail" //조건부 표현식 사용예시 score = 85 result="Success" if score>=80 else "Fail" 반복문 for문에서 수를 사용하여 표현하고자할때 -> range range(처음, 끝값+1) -> 처음~끝값 - ex) range(0, 10) : 0~9 range(수) -> 0~수-1 - ex) range(5) : 0~4 역순으로 처리하고싶을때, range(처음, 끝값..

[Python 문법] 자료형

실수형 //10억 a = 1e9 //752.5 a = 75.25e1 //3.954 a = 3954e-3 파이썬에서는 변수에 소수점을 붙인 수를 대입하면 실수형 변수로 처리한다. 소수부가 0이거나 정수부가 0이면 0을 생략할 수 있다. //a = 5.0 a = 5. //a = -0.5 a = -.5 실수형 데이터는 e나 E를 이용한 지수표현 방식을 이용할 수 있다. 즉, 유효숫자e^지수 = 유효숫자 * 10^지수 특히, 무한(INF) 값을 표현할 때 최대값이 10억일 경우 INF값을 1e9로 표현할 수 있다. (1e9 = 10억) //10억 a = 1e9 //75.25 a = 7.525e1 //3.954 a = 3954e-3 컴퓨터는 실수를 정확히 표현하지 않으므로, 정확한 실수는 round(첫번째 인자,..

반응형