kangee-mohum의 등록된 링크

 kangee-mohum로 등록된 티스토리 포스트 수는 5건입니다.

파이썬 알고리즘 공부 - 투 포인터 / 백준 1940 / 백준 2018 / 백준 1253 [내부링크]

투 포인터 알고리즘 (Two Pointer Algorithm)은 리스트에서 두 개의 포인터를 사용해 원하는 결과를 찾거나 특정 조건을 만족시키는 알고리즘이다. 보통 O(N)에 문제를 해결할 수 있어 유용하다! 두 포인터를 한 방향으로 진행: 두 포인터를 리스트의 시작 위치에서 같은 방향으로 움직인다. 일반적으로 시작 위치와 끝 위치에서 시작하고, 필요에 따라 포인터를 이동시키면서 조건을 만족하는 부분을 찾는다. 두 포인터를 반대 방향으로 진행: 두 포인터를 배열이나 리스트의 양 끝에서 서로 반대 방향으로 움직인다. 이 방식은 주로 두 요소의 합, 차 등을 비교하거나 반대 방향에서 수렴해가는 문제를 해결할 때 사용됩니다. 백준 1940번 https://www.acmicpc.net/problem/1940 1..

파이썬 알고리즘 공부 - 구간 합 [내부링크]

합 배열을 만들어 두고 이를 통해 구간 합을 구할 수 있다. 구간합: s[j]-s[i-1] => i~j까지의 구간 합 예제 풀이 import sys N,M=map(int, sys.stdin.readline().split()) num=sys.stdin.readline().split() li=[] for i in range(M): new=(sys.stdin.readline().split()) li.append(new) sectionsurplus=[0,int(num[0])] for i in range(0,len(num)-1): sectionsurplus.append(int(num[i+1])+int(sectionsurplus[i+1])) for i in range(M): A=int(li[i][1]) B=int(..

배열 vs 리스트 (c++) [내부링크]

array -인덱스를 사용해 값에 바로 접근 - 값을 삽입/삭제 어려움 (다 한 칸씩 밀어야 함) - 배열 크기는 선언할 때 지정할 수 있으며 한 번 선언하면 변경 x -간단한 구조 list(linked list) - 인덱스 x, 앞에서부터 순서대로 접근해서 찾아야함 - 포인터로 연결되어 있기 때문에 데이터 삽입 삭제 빠름 - 선언 시 크기 별도 지정 x - 포인터를 저장할 공간이 필요 --> 배열보다 복잡

파이썬 알고리즘 시간복잡도 [내부링크]

N의 범위가 500인 경우 : 시간 복잡도가 O(N^3)인 알고리즘으로 설계하면 풀이 가능 N의 범위가 2,000인 경우 : 시간 복잡도가 O(N^2)인 알고리즘으로 설계하면 풀이 가능 N의 범위가 100,000인 경우 : 시간 복잡도가 O(NlogN)인 알고리즘으로 설계하면 풀이 가능 N의 범위가 10,000,000인 경우 : 시간 복잡도가 O(N)인 알고리즘으로 설계하면 풀이 가능 파이썬은 1초에 2,000만에서 1억정도의 연산을 처리할 수 있다.

백준 2164번 파이썬 풀이 [내부링크]

https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 결론 미리 보기 파이썬에서 string slicing은 시간복잡도 N(len(str))이므로 특정 인덱스의 글자에 접근할 때는 list로 만들어 접근하는 것이 시간복잡도 O(1)로 빠르다! 가장 직관적으로 짤 수 있는 코드는 아마 아래의 코드일 것이다. import sys N=int(sys.stdin.readline()) st='' for i in range(N): st+=str(i+1) for ..