Python 썸네일형 리스트형 [코딩테스트/Python] 프로그래머스 코딩테스트 - 문자열 압축 문제 설명 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 "aabbaccc"의 경우 "2a2ba3c"(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. 예를 들면, "abcabcdede"와 같은 문자열은 전혀 압축되지 않습니다. "어피치"는 이러한 단점을 해결하기 위해 문자열을 1개 이상의 단위로 잘.. 더보기 [코딩테스트/Python] 프로그래머스 코딩테스트 - 주사위 게임 3 문제 설명 1부터 6까지 숫자가 적힌 주사위가 네 개 있습니다. 네 주사위를 굴렸을 때 나온 숫자에 따라 다음과 같은 점수를 얻습니다. 네 주사위에서 나온 숫자가 모두 p로 같다면 1111 × p점을 얻습니다. 세 주사위에서 나온 숫자가 p로 같고 나머지 다른 주사위에서 나온 숫자가 q(p ≠ q)라면 (10 × p + q)2 점을 얻습니다. 주사위가 두 개씩 같은 값이 나오고, 나온 숫자를 각각 p, q(p ≠ q)라고 한다면 (p + q) × |p - q|점을 얻습니다. 어느 두 주사위에서 나온 숫자가 p로 같고 나머지 두 주사위에서 나온 숫자가 각각 p와 다른 q, r(q ≠ r)이라면 q × r점을 얻습니다. 네 주사위에 적힌 숫자가 모두 다르다면 나온 숫자 중 가장 작은 숫자 만큼의 점수를 얻습.. 더보기 [BeautifulSoup/Selenium] BeautifulSoup, Selenium 기본 정리 BeautifulSoup - HTML Parser가 필요한 이유DOM(Document Object Model)웹 문서의 구조화된 표현으로, 프로그래밍 언어가 웹 페이지 내의 객체에 접근하고 조작할 수 있게 하는 인터페이스로 동작한다. 주로 자바스크립트에서 웹 페이지의 요소를 선택, 수정, 추가 또는 제거할 때 사용된다. 트리 모양처럼 생기기도 한 DOM은 각 노드를 객체 타입으로 여겨 문서 관리를 더욱 편리하게 한다.웹 브라우저는 DOM을 생성한 후 DOM Tree를 순회해서 특정 원소를 추가/삭제하거나(동적 프로그래밍), 쉽게 찾을 수 있다. 즉, DOM을 이용하면 웹 스크래핑/크롤링도 찾고자 하는 요소를 쉽게 찾을 수 있다. Python으로 HTML 문서를 파싱해서 분석하는 Parser가 있다면, D.. 더보기 [HTTP/Python] HTTP 통신, 웹 스크래핑/크롤링 기본 개념 정리 인터넷과 웹웹이 등장하기 까지의 과정:네트워크: 두 컴퓨터 간의 통신망LAN: 근거리 통신망 네트워크 Internet: 범지구적으로 연결된 네트워크WEB: 인터넷 상에서 정보를 교환하기 위한 시스템으로 개발됨 웹에서 정보를 주고받는 방법클라이언트(사용자)가 서버에 정보 요청 (= Request)서버에서 클라이언트 요청에 대한 처리 진행상황에 따른 응답 (응답코드를 리턴, ex) 2XX(성공), 4XX(클라이언트 에러), 5XX(서버 에러)) HTTP(Hypertext Transfer Protocol)의 구조HTTP는 웹 상에서 정보를 주고받기 위한 일종의 약속이다. 기본적으로, 클라이언트에서 서버로 정보를 요청하고(HTTP 요청(Request)) 요청된 정보에 대해 서버가 클라이언트에게 응답(HTTP 응.. 더보기 [CS/Python] 자료구조 & 알고리즘 정리 - 연결 리스트, 스택, 후위 표기법 연결 리스트 (Linked lists)연결 리스트는 선형 배열과는 유사한 구조이지만, 데이터 원소를 늘어놓는 방식에서 큰 차이가 있다. 선 형 배열이 "번호가 붙여진 칸에 원소들을 채워넣는" 방식이라고 한다면, 연결 리스트는 "각 원소들을 줄줄이 엮어서" 관리하는 방식이다. 연결 리스트가 가지는 이점은 원소의 삽입, 삭제가 선형 배열과 비교해 쉽게 처리할 수 있다는 것이다. 원소들이 link라는 고리로 연결되어 있기 때문에 가능한 일이다. 삽입/삭제가 빈번히 일어나는 응용에서 연결 리스트가 많이 이용되며, OS 내부에서도 많이 이용된다. 연결리스트가 가지는 단점도 물론 있다. 선형 배열에 비해 소요되는 메모리 요구량이 크다. 또한, 특정 위치의 원소를 찾기 어렵다. 선형 배열의 경우 index가 지정되어.. 더보기 [빅데이터를 지탱하는 기술] 1장 빅데이터의 기초 지식 얼마 전 같은 분야를 공부하는 지인에게 책을 하나 추천받았다. 데이터 엔지니어링에 대한 기초에 대해 꼼꼼하게 잘 정리된 책이라는 후기와 함께. 책 제목은 '빅데이터를 지탱하는 기술'이다. 이 책은 많은 사람들이 이제는 익숙한 '데이터 분석'에 대해 거의 다루지 않는다. 책의 저자도 '데이터 처리를 어떻게 시스템화하는가에 대한 문제'를 다룬다고 설명한다. 데이터 분석에서 80%의 시간이 데이터를 준비하는데 소요된다고 한다. 실제 현장의 목소리를 들어보면, '데이터 과학자로 입사했더니 데이터의 전처리만 주로 하고 있다.'는 하소연이 많다. '데이터 준비'라는 엔지니어링 부분을 효율화하지 않으면 데이터 분석의 수고가 사라지는 일은 없다. 책에서 인용한 위 내용처럼 데이터 분석에 있어 가장 시간이 많이 걸리는.. 더보기 [프로그래머스 코딩테스트/Python] 예상 대진표 문제풀이 문제 설명문제 설명 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N번의 참가자끼리 게임을 진행합니다. 각 게임에서 이긴 사람은 다음 라운드에 진출할 수 있습니다. 이때, 다음 라운드에 진출할 참가자의 번호는 다시 1번부터 N/2번을 차례대로 배정받습니다. 만약 1번↔2번 끼리 겨루는 게임에서 2번이 승리했다면 다음 라운드에서 1번을 부여받고, 3번↔4번에서 겨루는 게임에서 3번이 승리했다면 다음 라운드에서 2번을 부여받게 됩니다. 게임은 최종 한 명이 남을 때까지 진행됩니다. 이때, 처음 라운드에서 A번을 가진 참가자는 경쟁자로 생각하는 B번 참가.. 더보기 [프로그래머스 코딩테스트/Python] 올바른 괄호 문제풀이 최근 프로그래머스 데이터 엔지니어링 데브코스 지원을 계기로 코딩테스트 문제를 풀어보게 되었는데, CS 공부와 코테 풀이를 워낙 오랫동안 안하다 보니 감조차 못 잡는 느낌이 들었다. (데브코스 테스트 문제는 Lv.1~2 수준이라고 해서 나름 문제 몇 개 풀고 대비도 했는데, 생각보다 너무 어려웠다.) 이대로는 안된다. 오늘부터 하루 1문제씩 풀이를 해보려고 한다. 코딩도 계속 해보고 익숙해져야 느는 법이다. 오늘이 첫 날이기 때문에 간단해보이는 문제부터 시작했다. 문제 설명괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.. 더보기 이전 1 2 3 4 5 ··· 12 다음