본문 바로가기

전체 글133

[백준 1759] 암호 만들기, C++ www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 본 문제는 주어진 c개의 문자 중 l개를 골라 암호를 만드는 문제다. 이때, 최소 한 개의 모음 (a, e, i, o, u)과 최소 두 개의 자음으로 구성되어 있어야 하며, 암호는 알파벳 순으로 이루어져야 한다. 따라서 주어진 c개의 문자를 정렬하고 c개 중 l개를 만들 수 있는 모든 경우의 수를 만들고 자음과 모음의 개수가 조건에 만족하는지 확인하면서 출력하면 된다. 1 2 3 4 5 6 7 8 9 10 11 12.. 2020. 9. 17.
[백준 3085] 사탕 게임, C++ www.acmicpc.net/problem/3085 3085번: 사탕 게임 첫째 줄에 상근이가 먹을 수 있는 사탕의 최대 개수를 출력한다. www.acmicpc.net 본 문제는 n * n 크기의 사탕 중에서 인접한 2개의 사탕을 서로 교환하여 행 또는 열 중 가장 긴 연속 부분을 고르는 문제다. 문제의 조건에 맞게 인접한 2개의 사탕을 고르고 서로 교환하고 가장 긴 연속 부분을 확인하고 다시 교환하는 방식으로 문제를 해결하였다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182.. 2020. 9. 8.
[백준 2309] 일곱 난쟁이, c++ www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 진짜 일곱 난쟁이를 찾는 문제 총 9명중 7명을 고르는 문제다. 문제의 조건 중 일곱 난쟁이의 키의 합이 100이라고 한다. 따라서 7명을 고르는 모든 경우의 수를 확인하면서 7명의 합이 100일 때 오름차순으로 출력하고 종료를 하면 된다. 문제 해결을 위해 next_permutation()을 이용하였다. { 0, 0, 1, 1, 1, 1, 1, 1, 1 }으로 만들 수 있는 모든 경우의 수를 만들고 1일 때 해당 위치.. 2020. 9. 8.
[백준 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.