분류 전체보기
-
[SWEA] 원자 소멸 시뮬레이션Algorithm Study/Python 2021. 10. 8. 00:54
https://swexpertacademy.com/main/main.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 위 그림처럼 원자들이 이동하면서 충돌 소멸하는 시뮬레이션을 구현하는데 좌표값이 -1000 ~ 1000이고 원자들이 충돌하는 시간이 1초일 때, 0.5초일 때가 존재해 해당 부분을 고려해야하는 문제다. 풀이 메모리 초과로 인한 런타임 오류에 대한 문제를 찾지 못해서 많이 고생했다. data = popleft() 로 받아서 data[0], data[1]... 으로 접근하여 수정 => append(data) data1, data2, data3 = popleft()로 받아서 접근 후 수정 => ap..
-
Multi Process와 Multi ThreadComputer/CS 2021. 10. 7. 01:43
프로세스와 쓰레드 프로세스는 메모리에서 실행되고 있는 프로그램의 인스턴스로 독립적인 개체이다. 운영체제로부터 시스템 자원을 할당 받는 작업의 단위이며 실행된 프로그램을 의미한다. 프로세스들은 각각 독립된 메모리영역을 할당 받으며 기본적으로 1개의 스레드를 가지고 있다. 스레드는 프로세스 내에서 실행되는 여러 흐름의 단위이며 프로세스가 할당 받은 자원을 이용하는 실행 단위 프로세스 내에서 Stack만 따로 할당받고 나머지 영역은 공유한다. 같은 프로세스 내에 쓰레드는 Code, Data, Heap과 같은 공간을 공유하기 때문에 다른 스레드에 접근할 수 있지만, 다른 프로세스에 존재하는 메모리에는 직접 접근할 수 없다. 멀티 프로세스(Multi Process) 개념 두개 이상 다수의 프로세서(CPU)가 협력..
-
[SWEA] 보물상자 비밀번호Algorithm Study/Python 2021. 10. 5. 23:28
https://swexpertacademy.com/main/main.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 위 그림처럼 4가지로 나눈 뒤 1칸씩 회전시키며 나올 수 있는 문자열을 구하면 된다. 다음과 같은 기능이 필요하다. 1. 문자열 회전 2. 회전된 배열 나눈 후 저장, 중복 체크 3. 정렬 4. 16진수 -> 10진수 풀이 password = deque(password) password.appendleft(password.pop()) password = list(password) 문자열 회전은 deque를 이용하여 구현하였다. 마지막 값을 pop한 뒤 맨 앞에 append하면 된다. 이동한 ..
-
누적합의 확장 IMOSComputer/CS 2021. 9. 30. 01:11
IMOS는 누적합의 개념으로 특정 구간에서 가장 많이 중첩되는 영역을 구할 수 있는 방법 중 하나이다. 예를 들어 가게에 Q명의 손님이 방문한다. 가게는 시간 0부터 T까지 운영되며, 각각의 손님 i의 방문 시각(si)과 퇴장 시각(ei)이 입력으로 주어진다. 가게 운영 중 손님이 가장 많이 방문했을 때의 손님 수는 몇 명인가? 이런 문제가 있다면 입력을 위와 같은 그림으로 나타낼 수 있을 것이다. 이 때 가장 단순하게 구현한다면 for문을 si부터 ei까지 돌리면서 해당 배열의 값을 +1 해주는 것이겠지만 이 경우는 쿼리 하나의 처리 시간이 T 쿼리의 갯수를 Q라고 했을 때 시간 복잡도는 Q(TQ)가 되어서 쿼리가 많아지고 시간이 길어지는 경우에는 풀 수 없게된다. 이 때 사용하는 IMOS는 입장과 퇴..
-
[백준] 18808 스티커 붙이기Algorithm Study/Python 2021. 9. 28. 23:49
https://www.acmicpc.net/problem/18808 18808번: 스티커 붙이기 혜윤이는 최근에 다양한 대회를 참여하면서 노트북에 붙일 수 있는 스티커들을 많이 받았다. 스티커는 아래와 같이 사각 모눈종이 위에 인쇄되어 있으며, 스티커의 각 칸은 상하좌우로 모두 연 www.acmicpc.net 풀이 스티커가 들어갈 수 있는지 체크하고 들어가지 못하면 90도 회전시킨 후 다시 확인하는 단순한 구현이지만 세세한 부분을 체크해야하는 문제였다. ROW, COL, K = map(int, input().split()) board = [[0 for _ in range(COL)] for _ in range(ROW)] stickers = [] for i in range(K): r, c = map(int,..
-
Hashing - Chaining, Open AddressingComputer/CS 2021. 9. 27. 04:50
# 해싱이란? 대부분의 탐색 방법들은 탐색 키를 저장된 키 값과 반복적으로 비교하면서 탐색을 원하는 항목에 접근한다. 반면 해싱은 키 값에 직접 산술적인 연산을 적용하여 항목이 저장되어 있는 테이블의 주소를 계산하여 항목에 접근한다. 이렇게 키 값의 연산에 의해 직접 접근이 가능한 구조를 해시 테이블(hash table)이라 부르고, 해시 테이블을 이용한 탐색을 해싱(hashing)이라 한다. 키들의 비교에 의한 탐색 방법은 정렬이 안 되어 있다면 O(n)이고 정렬이 되어 있다면 O(log_2n)이다. 정렬되어 있는 경우의 시간 복잡도가 O(log_2n)인 건 이진 탐색 알고리즘 혹은 이진 탐색 트리의 탐색 알고리즘의 시간복잡도를 생각하면 된다. 잘 모르겠다면 이진 탐색 또는 이진 탐색 트리 알고리즘 게..
-
HTTP 상태 코드Computer/CS 2021. 9. 27. 04:24
https://developer.mozilla.org/ko/docs/Web/HTTP/Status HTTP 상태 코드 - HTTP | MDN HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제공하는 응답, 성공적인 응답, 리다이렉트, 클라이언트 에러, 그리고 developer.mozilla.org HTTP 응답 상태 코드에 대해서 자세하게 알 필요는 없지만 기본적인 내용은 알고 있는 것이 좋을 것 같다. 특정 HTTP 요청이 성공적으로 완료되었는지 알려주고 응답은 5개의 그룹으로 나누어진다. 정보 제공, 성공, 리다이렉트, 클라이언트 에러, 그리고 서버 에러를 나타낸다. 자세한 내용은 MDN을 이용해서 찾아볼 수 있기 때문에 ..
-
[백준] 16236번 아기 상어Algorithm Study/Python 2021. 9. 24. 02:54
https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 아기 상어가 어디로 이동할지 결정하는 방법은 아래와 같다. 더 이상 먹을 수 있는 물고기가 공간에 없다면 아기 상어는 엄마 상어에게 도움을 요청한다. 먹을 수 있는 물고기가 1마리라면, 그 물고기를 먹으러 간다. 먹을 수 있는 물고기가 1마리보다 많다면, 거리가 가장 가까운 물고기를 먹으러 간다. 거리는 아기 상어가 있는 칸에서 물고기가 있는 칸으로 이동할 때, 지나야하는 칸의 개수의 최솟..