목록python (30)
차밍이
목차 문제 설명 문제 설명 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,000 이하인 자연수입니다. prices의 길이는 2 이상 100,000 이하입니다. 입출력 예 prices return [1, 2, 3, 2, 3] [4, 3, 1, 1, 0] 입출력 예 설명 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다. 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다. 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다. 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다. 5..
목차 문제 설명 문제 설명 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다. 단, 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다. 예를 들어, 트럭 2대가 올라갈 수 있고 무게를 10kg까지 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 경과 시간 다리를 지난 트럭 다리를 건너는 트럭 대기 트럭 0 [] [] [7,4,5,6] 1~2 [] [7] [4,5,6] 3 [7] [4] [5,6] 4..
목차 multiprocessing 사용하게된 계기 기록용으로 안읽고 다음 탭으로 넘어가셔도 됩니다. 파이썬에서 처리 속도를 높이기 위해 멀티 프로세싱을 사용할 수 있다. 대용량의 csv 파일 수 천개를 다뤄야 했던 경험이 있다. pandas를 사용해서 파일을 읽어오는 것에만 상당히 많은 시간을 소모한다. 하나의 csv 파일을 읽어오기 위해서 그 동안 가만히 기다려야 하는 시간들이 매우 소모적이라고 생각했다. 대용량 csv 파일도 있지만 절반 정도는 매우 용량이 적은 csv 파일들이었다. 메모리에 문제가 없는 수준에서는 여러개의 파일을 읽어와서 동시에 처리해도 괜찮겠다고 생각했다. 그래서 멀티프로세싱을 사용해 core 4개로 설정했더니 2배 이상 빨라졌다. Good ! 멀티 Pool 사용하기 from mu..
목차 What is Module ? 모듈은 여러 기능을 모아둔 파이썬 파일입니다. 사용할 함수들을 정의해 놓은 파일을 의미합니다. 예를 들어 우리는 평면도형의 면적을 구해 주는 함수들을 모아서 area라는 모듈을 만들었습니다. area.py PI = 3.14 # 원의 면적을 구해 주는 함수 def circle(radius): return PI * radius * radius # 정사각형의 면적을 구해 주는 함수 def square(length): return length * length import area 등의 방식으로 import해서 area 모듈의 circle 등의 함수를 사용할 수 있습니다. What is Script ? 스크립트는 모듈에서 정의함 함수들을 사용하는 파일을 의미합니다. run.py..
목차 1. 데이터 불러오기 1-1. CSV 파일 데이터를 청크 크기로 읽어오기 100만개 이상이 넘어가는 row를 가진 데이터셋을 불러온다면 너무 무거워져서 속도가 매우 느려지게 됨 pandas.read_csv에서 chunksize라는 매개변수 활용 가능 로컬 메모리에 맞추기 위해 한 번에 DataFrame으로 읽어 올 행의 수를 지정 가능 df_chunk = pd.read_csv(r'../input/data.csv', chunksize=1000000) 1-2. 파일이 안불러와 질 때, 각 Column 타입 줄여서 불러오기 데이터가 너무 많아 불러오기 힘든 경우, 각 Column의 타입을 확인해서 데이터 크기를 줄여서 불러올 수 있다. def check_dtypes(file_path): print(fil..
목차 Pandas로 대용량 데이터 분석을 진행하다보면 문제가 겪는 어려움 들이 많다. pandas로 데이터를 읽는데 어려움이 있는 경우 취할 수 있는 방법이다. 1. 파일이 불러와지지 않는 경우 대략적인 과정 column 명 만 먼저 가져온다. 각 데이터 테이블에서 특정 column의 데이터만 가져온다. 해당 column의 데이터 타입을 확인한다. 해당 column의 데이터 범위를 확인하여, 데이터 타입을 줄일 수 있는 경우 타입을 변경해 줄인다. 전체 column에 대해서 진행한다. 이 후 pd.read_csv를 통해 데이터를 읽어올 때, 데이터 타입을 정해서 읽어오도록 한다. 소스코드 - 파일이 불러와지지 않는 경우 def check_dtypes(file_path:str) -> dict: print(..
뒤집기 시간 제한메모리 제한제출정답맞힌 사람정답 비율 2 초 128 MB 15466 8301 6509 53.493% 문제 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다. 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미한다. 예를 들어 S=0001100 일 때, 전체를 뒤집으면 1110011이 된다. 4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어서 2번 만에 모두 같은 숫자로 만들 수 있다. 하지만, 처음부터 4번째 문자부터 5번째 문자까지 문자를 뒤집으면 한 번에 0000000이 되어서 1번 만에 모두 같은 숫자로 ..
거스름돈 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 128 MB 28162 17674 15045 62.446% 문제 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사고 카운터에서 1000엔 지폐를 한장 냈을 때, 받을 잔돈에 포함된 잔돈의 개수를 구하는 프로그램을 작성하시오. 입력 입력은 한줄로 이루어져있고, 타로가 지불할 돈(1 이상 1000미만의 정수) 1개가 쓰여져있다. 출력 제출할 출력 파일은 1행으로만 되어 있다. 잔돈에 포함된 매수를 출력하시오. 예제 입력 1 380 예제 출력 1 4 예제 입력 2 1 예제 ..
해킹 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 256 MB 8889 3518 2481 38.453% 문제 최흉최악의 해커 yum3이 네트워크 시설의 한 컴퓨터를 해킹했다! 이제 서로에 의존하는 컴퓨터들은 점차 하나둘 전염되기 시작한다. 어떤 컴퓨터 a가 다른 컴퓨터 b에 의존한다면, b가 감염되면 그로부터 일정 시간 뒤 a도 감염되고 만다. 이때 b가 a를 의존하지 않는다면, a가 감염되더라도 b는 안전하다. 최흉최악의 해커 yum3이 해킹한 컴퓨터 번호와 각 의존성이 주어질 때, 해킹당한 컴퓨터까지 포함하여 총 몇 대의 컴퓨터가 감염되며 그에 걸리는 시간이 얼마인지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 테스트 케이스의 개수는 최대 100개..
효율적인 해킹 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 5 초 256 MB 41545 7680 5077 19.779% 문제 해커 김지민은 잘 알려진 어느 회사를 해킹하려고 한다. 이 회사는 N개의 컴퓨터로 이루어져 있다. 김지민은 귀찮기 때문에, 한 번의 해킹으로 여러 개의 컴퓨터를 해킹 할 수 있는 컴퓨터를 해킹하려고 한다. 이 회사의 컴퓨터는 신뢰하는 관계와, 신뢰하지 않는 관계로 이루어져 있는데, A가 B를 신뢰하는 경우에는 B를 해킹하면, A도 해킹할 수 있다는 소리다. 이 회사의 컴퓨터의 신뢰하는 관계가 주어졌을 때, 한 번에 가장 많은 컴퓨터를 해킹할 수 있는 컴퓨터의 번호를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에, N과 M이 들어온다. N은 10,000보다 작거나 같은..