전체 글 153

[백준 | 파이썬3] 10866 덱 - 덱

https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net > 덱 선입, 후입이 모두 가능한 deque 함수로 구현가능하다. 앞으로 넣을 땐 appendleft(), 뒤로 넣을 땐 append() 메서드를 사용한다. * 리스트를 활용한 풀이도 가능하다. 리스트에서 push front 기능을 작성할 때 insert(넣는 위치, 넣을 수) 메소드를 활용할 수 있다.

[백준 | 파이썬3] 1181. 단어정렬 - 정렬

https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net > 정렬 sort 메서드를 활용해 정렬한다. 정렬 조건으로 첫 번째는 단어의 길이, 두 번째는 단어 사전 순으로 설정했다. 같은 단어는 한번만 출력되기 때문에 8 line 이후의 출력 코드에서 if 문을 통해 이전의 단어와 같은 단어이면 출력되지 않도록 작성했다. * 정답으로 통과는 했으나 비효율적인 코드이다. ▶ 배운점 그렇다면 본 코드에서 비효율을 어떻게 개선할 수 있을까? 첫 번째..

[백준 | 파이썬3] 1436. 영화감독 숌 - 브루트포스

https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net > 완전탐색 문제 내용 그대로 이해한 바를 코드로 옮기면 다음과 같다. 최소 수인 666부터 시작해서 1씩 더한 수를 문자화한다. 해당 문자가 문제 조건인 '666'을 포함하는 수들이면 lst안에 추가하고 lst 안에 추가된 요소의 개수가 n이면 반복문을 중단한다. * 해당 코드는 말그대로 완전 탐색으로 처음부터 끝까지 모든 수들을 문자화하고 조건문에 넣기 때문에 굉장히 시간 비효율적이다. ▶ ..

[백준 | 파이썬3] 10872. 팩토리얼 - 재귀

https://www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net > 재귀함수 반복문을 활용해 풀었던 문제인데, 이번에는 재귀 함수로 해당 문제를 다시 풀어보았다. 아래 코드처럼 코드를 작성하여 제출했더니 RecursionError가 떴다. * RecursionError: 재귀와 관련된 에러로 파이썬이 정한 최대 재귀 깊이 보다 그 깊이가 더 깊어질 때 발생하는 에러이다. 백준 채점 서버에서 최대 재귀 깊이는 1,000으로 설정되어있다. * 해당 코드에서 RecursionError가 발생한 이유: fac(5)인 경우를 생각해보자. 5*4*3*2*fac(1)까지 함수..

[백준 | 파이썬3] 11651. 좌표 정렬하기2- 정렬

https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net > 정렬 백준의 11650번 문제와 거의 동일한 문제로 기존 풀이에서 정렬 기준 key 값만 순서를 바꿔주면 된다.

[백준 | 파이썬3] 1012. 유기농 배추- dfs

https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net > dfs 활용 백준의 단지 붙이기 문제 풀이와 거의 유사하다. 가로와 세로(행과 열)을 헷갈리는 것에 유의(인덱싱에러)하고 dfs 함수가 recursion error에 걸리지 않도록 재귀 최대 깊이를 설정하는것에 유의하면 해결할 수 있다.

[ Tableau] 태블로 이해하기 - 데이터 시각화를 위한 태블로

데이터 분석 직무 혹은 마케팅, 기획 부문의 역량 및 필요 스킬을 보다보면 tableau를 통한 시각화 분석 능력이 종종 언급되는 것을 볼 수 있었다. 그래서 나중에 태블로도 한번 배워봐야지하고 생각해왔던 찰나였는데 네이버 부스트코스에서 데이터 시각화를 위한 태블로 강의를 발견했다. 이때다 싶어 강의를 들으며 태블로를 배워보려고 한다. https://www.boostcourse.org/ds121/joinLectures/286344 데이터 시각화를 위한 태블로 부스트코스 무료 강의 www.boostcourse.org 이전에 미니 프로젝트로 데이터를 간단히 처리한 후 시각화해서 보여주는 대시보드를 구축한 적이 있다. 파이썬에서 plotly를 활용하여 구축했었는데 대시보드 웹 구조를 고려해서 원하는대로 그래프..

Data Analysis Tools 2021.08.16

[백준 | 파이썬3] 11404. 플로이드- 플로이드 워셜

https://www.acmicpc.net/problem/11404 11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net > 플로이드 워셜 전형적인 플로이드 워셜 알고리즘 유형의 문제이다. https://westshine-data-analysis.tistory.com/45?category=843975 최단경로 알고리즘(3)/ 플로이드 워셜 알고리즘 나동빈님의 '이것이 코딩테스트다 with 파이썬'저서와 유튜브 강의를 참고하며 작성하였습니다. 코드 출처: https://github.com/ndb796/python-fo..

[백준 | 파이썬3] 9012. 괄호- 스택

https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net > 스택 우선 input으로 모든 입력값들을 받은 후 입력값들이 각각 올바른 문자열인지 판단하는 vps 함수를 구현하여 해결했다. 문자열을 하나씩 입력 받기 위한 리스트로 target 변수를 선언한다. 만일 들어오려는 문자열이 '('이면 리스트에 append하고 아니라면 가장 마지막에 들어온 괄호 '('을 리스트에서 빼준다. 그런데 그 과정에서 다음과 같은 문자열은 ..

[백준 | 파이썬3] 2805. 나무자르기 - 이분탐색

https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net > 이분탐색 M의 최댓값이 20억이므로 이분탐색을 통해 시간복잡도를 줄여야한다. 문제는 전형적인 이분탐색 문제로 다음과 같은 아이디어로 해결할 수 있다. 위의 아이디어를 코드로 구현하면 다음과 같다. 얻을 수 있는 나무길이 합이 target보다 크냐 작냐에 따라 탐색하는 범위를 달리하여 문제를 해결한다,