본문 바로가기

전체 글139

[백준 2668] 숫자고르기, c++ www.acmicpc.net/problem/2668 2668번: 숫자고르기 세로 두 줄, 가로로 N개의 칸으로 이루어진 표가 있다. 첫째 줄의 각 칸에는 정수 1, 2, …, N이 차례대로 들어 있고 둘째 줄의 각 칸에는 1이상 N이하인 정수가 들어 있다. 첫째 줄에서 숫자를 적절� www.acmicpc.net 취업 이후 오랜만에 ps 문제를 풀었다. 한 2달은 문제를 안풀었더니 다 까먹었다ㅠㅠ 취업준비 기간때는 그래도 골드2 이하 문제는 쉽게 풀었던거 같은데 이젠 실버2도 힘들다... 곧 자취를 하는데 다시 열심히 공부해야겠다. 본 문제는 KOI 1996 초등부 2번 문제로 cycle의 집합을 구하는 문제다. dfs를 이용하여 주어진 배열을 탐색하면서 cycle이 발생할 때 집합에 추가해야 한다. 이때.. 2020. 7. 26.
python을 이용하여 디렉터리를 생성하고 파일 이동하기 공공데이터 분류 작업을 하면서 다음과 같은 작업이 필요하였다. 파일을 다운 받는다. 다운 받은 파일 이름으로 디렉터리를 만들고 이동시킨다. 디렉터리의 앞에는 분류명을 명시해야 한다. 처음에는 먼저 디렉터리를 만들기 위해 .bat 파일을 만들어서 작업하려고 했으나 파일을 일일이 이동시켜야 했다. 그래서 리눅스의 mv와 비슷한 python 코드가 있지 않을까? 싶어서 찾아봤다. python 내부 라이브러리 중 shutil이 있었다. shutil.move(file, dir) # file을 dir로 이동 그리고 os 라이브러리에 makedirs(path, exist_ok=True) 가 있었다. # exist_ok=True 옵션은 디렉터리 생성 경로에 디렉터리가 없을 경우 자동으로 생성해주는 옵션이다. 따라서 1.. 2020. 6. 17.
pandas를 이용하여 csv row 추출하기 공공데이터포털에서 크롤링하여 국토관리, 사회복지 관련 자료를 다운받아 엑셀작업을 하는 임무를 부여받았다. 국토관리는 1,694건, 사회복지는 2,210건으로 크롤링 할때 데이터를 다 받으면 좋겠지만 다운로드 형식이 각각 csv, xlsx 가끔씩 hwp, zip 파일이 업로드 되어있다. 또 링크를 접소하여 해당 홈페이지에서 다운을 받아야하는 자료도 있기 때문에 공공데이터포털에서 리스트만 추출하였다. 약 3,900개의 자료를 다운받아서 해당 파일의 데이터를 보고 엑셀작업을 해야하는데 문제는 여기서 발생하였다. 각 데이터의 항목과 데이터예시를 엑셀에 저장해야하는데 이 작업이 시간이 많이 걸렸다. 반드시 코딩으로 시간 단축이 필요한 상황이였다. 예전 python으로 데이터를 추출하는 방법을 들은적이 있었다. 그.. 2020. 6. 11.
[백준 15685] 드래곤 커브, C++ https://www.acmicpc.net/problem/15685 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커� www.acmicpc.net 본 문제는 문제도 잘 이해되지 않고, 접근하기가 어려워 검색을 통해 힌트를 얻었다. 문제의 핵심은 다음과 같다. 첫 방향이 0이고 3세대인 경우는 (0), (0, 1), (0, 1, 2, 1), (0, 1, 2, 1, 2, 3, 2, 1)과 같은 규칙으로 드래곤 커브를 만들 수 있다. (0, 1)를 i번이라 하면 i+1번은 (i번 째) + (i번을 1씩 증가하고 뒤집는.. 2020. 5. 16.
[백준 14499] 주사위 굴리기, C++ https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도에 쓰여 있는 수가 북쪽부터 남쪽으로, 각 줄은 서쪽부터 동쪽 순서대로 주어진다. 주사위를 놓은 칸에 쓰여 있는 수는 항상 0이다. 지도의 각 칸에 쓰여 있는 수는 10을 넘지 않는 자연수 또는 0이다. 마 www.acmicpc.net 본 문제는 주어진 지도위에서 주사위를 굴릴 때 다음과 같은 조건을 만족해야 한다. 도착한 칸이 0일 경우 주사위 바닥의 수를 도.. 2020. 5. 11.
[백준 3190] 뱀, C++ https://www.acmicpc.net/problem/3190 3190번: 뱀 문제 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. www.acmicpc.net 본 문제는 'Dummy'라는 도스 게임이 있다. 이 게임에는 뱀이 나와서 기어 다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어 다니다가 벽 또는 자기 자신의 몸과 부딪히면 게임이 끝난다. 좀 더 자세한 설명은 링크를 참고하길 바란다. 뱀을 머리와 꼬리를 진짜로 움직이기는 까다롭다. 그래서 뱀을 이동한 시간과 뱀의 길이를 이용하여 문제를 해결할 수 있다. 방문한 칸에 사과가 있으면 뱀의 .. 2020. 5. 11.
[프로그래머스] level 3 - 가장 먼 노드, C++ https://programmers.co.kr/learn/courses/30/lessons/49189 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 본 문제의 자세한 설명은 링크를 참고하길 바란다. vector를 인접 리스트로 만들고 BFS 탐색을 한다. (chk 배열을 통해 1번만 방문하도록 한다.) 1에서 떨어진 길이를 기준으로 배열의 값을 증가 시킨다. 가장 멀리 떨어진 길이를 구하고 그 길이의 배열값을 return한다. 12345678910111213141516171819202122232425262728293031323334353637383940#.. 2020. 5. 8.
[프로그래머스] level 3 - 네트워크, C++ https://programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 자세한 문제의 설명은 링크를 참고하길 바란다. 간접 리스트를 구하고 chk배열을 이용하여 방문여부를 파악하면 된다. 12345678910111213141516171819202122232425262728293031323334353637383940#include #include #include #include using namespace std; int solution(int n, vector computers).. 2020. 5. 7.
[프로그래머스] level 3 - N으로 표현, C++ https://programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 아래와 같이 5와 사칙연산만으로 12를 표현할 수 있다. 12 = 5 + 5 + (5 / 5) + (5 / 5) 12 = 55 / 5 + 5 / 5 12 = (55 + 5) / 5 5를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경우는 4다. 이처럼 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return 하도록 solut.. 2020. 5. 7.