목록전체 글 (150)
Just Fighting
최근에 백준 문제를 파이썬으로 풀면서 map()함수를 자주 사용하게 되었다. 그래서 map()함수의 쓰임에 대해서 정리해보고자 한다. map()의 매개변수는 다음과 같다. 함수를 넣고, 그 함수를 적용할 리스트, 셋, 튜플 등을 넣어주면 된다. map(function, iterable, ...) 리스트에 들어있는 숫자들을 문자로 바꿔주고 싶다면 아래 처럼 사용하면 된다. str함수를 temp의 원소에 사용하겠다는 의미 그리고 list()해주어야 리스트의 형태로 만들어진다. 직접 만든 함수도 사용 가능하다. temp = [1,2,3,4] temp2 = list(map(str,temp)) temp2 람다 함수를 이용할 수도 있다! temp = [1,2,3,4] temp2 = list(map(lambda x ..
https://www.acmicpc.net/problem/1212 1212번: 8진수 2진수 첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다. www.acmicpc.net 8진수를 2진수로 바꿔라. 이때, 주어진 수가 0이 아닐 경우에는 출력값의 앞이 무조건 1이여야 한다. x = int(input()) binary = ['000','001','010','011','100','101','110','111'] ans = '' if x == 0 : print(0) else: for i in str(x): ans += binary[int(i)] print(ans.lstrip('0')) while문 신나게 돌리다가 시간 초과가 나서 생각한 다른 ..
카프카에는 다양한 데이터가 들어갈 수 있음 이 데이터가 들어가는 공간을 ‘토픽’이라고 함 일반적인 AMQP와는 다르게 동작함 카프카는 토픽을 여러 개 생성할 수 있음 토픽은 데이터베이스의 테이블이나 파일시스템의 폴더와 유사한 성질을 가짐 프로듀서가 토픽에 데이터를 넣고, 컨슈머가 그 데이터를 가져감 토픽은 이름을 가질 수 있음. 무슨 데이터를 담는지 명시하면 추후 유지보수에 편리함. 하나의 토픽은 여러개의 파티션으로 구성될 수 있으며, 파티션의 번호는 0부터 시작함. 파티션에 데이터가 차곡차곡 쌓이게 됨. 컨슈머는 데이터를 가장 오래된 순으로 가져감. 더 이상 데이터가 들어오지 않으면 컨슈머는 새로운 데이터가 들어올 때까지 기다림. 이 때, 컨슈머가 데이터를 가져가더라도 데이터는 삭제되지 않는다. 파티션..
https://www.acmicpc.net/problem/1009 1009번: 분산처리 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a 컴퓨터가 10대가 있다. 데이터의 개수는 항상 a^b개가 주어진다. 그리고 컴퓨터 하나와 데이터 하나 순서대로 짝지어진다. 이때, 마지막 데이터는 몇번째 컴퓨터에서 처리되는가? 단순하게 a^b를 구하고 10으로 나눈 나머지의 값을 출력하면 된다고 생각함. m = int(input()) for i in range(m): a, b = (map(int, inp..
데이터를 전송하는 소스 애플리케이션과 데이터를 받는 타겟 애플리케이션이 있음 처음에는 간단하게 단방향 통신을 했음 시간이 지나면서 소스 애플리케이션과 타겟 애플리케이션이 많아지고 데이터를 조성하는 라인이 복잡해짐 소스 애플리케이션와 타겟 애플리케이션 개수가 늘어날수록 데이터 전송 라인이 많아짐 -> 배포와 장애에 대응하기 어려움 데이터를 조성할 때 프로토콜, 포맷의 파편화가 심해짐 -> 포맷내부에 변경사항이 있을 때 유지보수하기가 어려워짐 이런 복잡함을 해결하기 위해 링크드인에서 아파치 카프카를 개발하였고, 오픈소스로 제공! 아파치 카프카는 소스 애플리케이션과 타겟 애플리케이션의 연결을 약하게 하기 위해 나옴. 소스 애플리케이션은 데이터를 카프카에 전송하면 되고, 타겟 애플리케이..
세 개 이상의 데이터 프레임을 합치기 위해 검색을 해봤더니 reduce함수를 사용해야 한다고 해서 찾아보고 연습해보았다. https://docs.python.org/3/library/functools.html?highlight=reduce#functools.reduce functools — Higher-order functions and operations on callable objects — Python 3.10.4 documentation functools — Higher-order functions and operations on callable objects Source code: Lib/functools.py The functools module is for higher-order functi..
의사결정나무는 나무를 이용해 의사결정을 한다. 의사결정나무는 아래 그림처럼 생겼다. 테스트를 위쪽에 놓고 해당 테스트로 발생 가능한 결과를 아래쪽에 놓는다. 하나의 테스트로 모두 판별되는 간단한 형태도 있지만 그렇지 않다면 또 다른 테스트를 통해 데이터 분류가 가능하다. 의사결정나무는 어떤 테스트를 선택하느냐에 따라 다양한 형태로 만들 수 있다. 다양한 테스트를 중에서 가장 성능이 좋은 테스트를 선택하는 것이 좋다. 이때 사용되는 개념이 ‘엔트로피’이다. 엔트로피는 불순도의 정도를 측정하며, 낮을수록 좋다. 이때, 불순도란 노드에 서로 다른 데이터가 얼마나 섞여있는지를 의미한다. 따라서 불순도가 낮을수록 데이터가 섞여있지 않다는 뜻이다. 아래 그래프에서 볼 수 있듯이 확률이 애매(?)할 때 엔트로피가 가..
2022.04.13 - [Statistics/SAS] - [SAS] 반복문 사용하기 바로 앞 게시글에서 do loop를 이용한 반복문을 사용하는 방법에 대해 다뤘다. do loop는 정해진 횟수만큼 반복하지만 조건을 만족할 때까지, 조건을 만족하는 동안 반복하는 방법도 있다. 제목에서도 알 수 있듯이 do until문과 do while문이다. do until은 조건에서 사용되는 변수가 현재 그 구간에 포함되지 않는 경우가 많고, do while은 조건에서 사용되는 변수가 현재 그 구간에 포함되어 있어, 그 구간을 벗어나는 순간 반복을 중단한다. do until문은 조건이 만족할 때까지 반복하는 것을 의미한다. C가 50000이상이 될때까지 반복을 하겠다는 의미가 된다. 23번째에 50000이 넘어서 반복..
2022.04.10 - [Statistics/SAS] - [SAS] where문과 if문 앞선 게시글에서 do문을 살짝 다뤘다. 오늘은 do loop문을 이용해 반복문을 작성해본다. 반복문은 아래 사진과 같이 작성할 수 있다. do i=1 to 12 라는 의미는 i를 1부터 12까지 12번 반복하겠다는 것이다. 이 때, output은 do loop문 안에 earned라는 변수의 값을 출력하는 것을 의미하며 12개의 행이 출력되는 것을 볼 수 있다. 위와 같은 코드인데 여기서 output을 뺀다면 아래 사진처럼 하나의 행만 출력되는 것을 알 수 있다. do-end문을 아래처럼 여러 번 중첩해서 사용할 수도 있다. do loop문은 중첩해서 사용할 수 있다. output문을 두번째 do문 안에 썼기 때문에 ..
where문과 if문의 차이에 대해서 다뤄보고자 한다. where문의 경우 proc print문에서 사용하며, 자료를 data단계로 불러오기 전 조건을 만족하는 자료만 선택한다. 이미 존재하는 data set을 이용하여 subset을 만들 때 사용한다. if문의 경우 data문에서 사용하며, 전체 자료를 읽어 들인 후에 조건에 맞는 것을 찾는다. raw data file에서 바로 subset 생성이 가능하다. if문 조건에 맞으면 then이하를 실행한다. 이때 여러 줄이라면 do-end문을 사용한다.