분류 전체보기

    [ 백준 1743 해설 ] ( python ) 음식물 피하기

    📚 음식물 피하기 문제 코레스코 콘도미니엄 8층은 학생들이 3끼의 식사를 해결하는 공간이다. 그러나 몇몇 비양심적인 학생들의 만행으로 음식물이 통로 중간 중간에 떨어져 있다. 이러한 음식물들은 근처에 있는 것끼리 뭉치게 돼서 큰 음식물 쓰레기가 된다. 이 문제를 출제한 선생님은 개인적으로 이러한 음식물을 실내화에 묻히는 것을 정말 진정으로 싫어한다. 참고로 우리가 구해야 할 답은 이 문제를 낸 조교를 맞추는 것이 아니다. 통로에 떨어진 음식물을 피해가기란 쉬운 일이 아니다. 따라서 선생님은 떨어진 음식물 중에 제일 큰 음식물만은 피해 가려고 한다. 선생님을 도와 제일 큰 음식물의 크기를 구해서 “10ra"를 외치지 않게 도와주자. 입력 첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 ..

    [ 백준 14501 해설 ] ( python ) 퇴사

    📚 퇴사 문제 상담원으로 일하고 있는 백준이는 퇴사를 하려고 한다. 오늘부터 N+1일째 되는 날 퇴사를 하기 위해서, 남은 N일 동안 최대한 많은 상담을 하려고 한다. 백준이는 비서에게 최대한 많은 상담을 잡으라고 부탁을 했고, 비서는 하루에 하나씩 서로 다른 사람의 상담을 잡아놓았다. 각각의 상담은 상담을 완료하는데 걸리는 기간 Ti와 상담을 했을 때 받을 수 있는 금액 Pi로 이루어져 있다. N = 7인 경우에 다음과 같은 상담 일정표를 보자. 1일2일3일4일5일6일7일TiPi 3 5 1 1 2 4 2 10 20 10 20 15 40 200 1일에 잡혀있는 상담은 총 3일이 걸리며, 상담했을 때 받을 수 있는 금액은 10이다. 5일에 잡혀있는 상담은 총 2일이 걸리며, 받을 수 있는 금액은 15이다...

    [ 백준 2110 해설 ] ( python ) 공유기 설치

    📚 공유기 설치 문제 도현이의 집 N개가 수직선 위에 있다. 각각의 집의 좌표는 x1, ..., xN이고, 집 여러개가 같은 좌표를 가지는 일은 없다. 도현이는 언제 어디서나 와이파이를 즐기기 위해서 집에 공유기 C개를 설치하려고 한다. 최대한 많은 곳에서 와이파이를 사용하려고 하기 때문에, 한 집에는 공유기를 하나만 설치할 수 있고, 가장 인접한 두 공유기 사이의 거리를 가능한 크게 하여 설치하려고 한다. C개의 공유기를 N개의 집에 적당히 설치해서, 가장 인접한 두 공유기 사이의 거리를 최대로 하는 프로그램을 작성하시오. 입력 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의..

    [ 인프런 강의 ] Git, GitHub 강의 TIL (1)

    0. 왜 Git과 GitHub를 익혀야 할까? 개발을 할 때 버전관리와 클라우드 저장소는 꼭 필요하다. Git과 GitHub는 각각 버전관리와 클라우드 저장소로 가장 많이 이용되는 개발 협업 툴 ✍ Git | 버전관리 원하는 시점에 버전을 만들고 이들 간 자유롭게 돌아다닐 수 있다. 동료의 버전으로도 접근할 수 있고 최신본으로 업데이트 할 수도 있다 CLI : 명령어를 쳐서 git을 다루는 방법 GUI : 버튼을 클릭해서 git을 다루는 방법 원하는 폴더에서 Git으로 버전관리하기 git init (git 초기화) .git이라는 숨겨진 폴더가 만들어진다 = 로컬 저장소 생성 로컬 저장소에 내가 만든 버전 정보, 원격 저장소 주소 등이 저장된다 원격 저장소에서 내 컴퓨터로 코드를 받아오면 로컬 저장소가 자..

    [ 백준 18428 해설 ] ( python ) 감시 피하기

    📚 감시 피하기 문제 NxN 크기의 복도가 있다. 복도는 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 선생님, 학생, 혹은 장애물이 위치할 수 있다. 현재 몇 명의 학생들은 수업시간에 몰래 복도로 빠져나왔는데, 복도로 빠져나온 학생들은 선생님의 감시에 들키지 않는 것이 목표이다. 각 선생님들은 자신의 위치에서 상, 하, 좌, 우 4가지 방향으로 감시를 진행한다. 단, 복도에 장애물이 위치한 경우, 선생님은 장애물 뒤편에 숨어 있는 학생들은 볼 수 없다. 또한 선생님은 상, 하, 좌, 우 4가지 방향에 대하여, 아무리 멀리 있더라도 장애물로 막히기 전까지의 학생들은 모두 볼 수 있다고 가정하자. 다음과 같이 3x3 크기의 복도의 정보가 주어진 상황을 확인해보자. 본 문제에서 위치 값을 나타낼 때는 (..

    [ 백준 22942 해설 ] ( python ) 데이터 체커

    📚 데이터 체커 문제 원 이동하기 2 문제를 만들고 만든 데이터가 문제의 조건에 맞는지 확인하는 코드를 작성해야한다. 해당 문제의 데이터는 아래 조건들을 만족해야한다. 모든 원의 중심 좌표는 x$x$축 위에 존재해야 한다. N$N$개의 원 중 임의의 두 원을 선택했을 때, 교점이 존재하지 않아야 한다. 즉, 하나의 원이 다른 원 안에 존재하거나 외부에 존재한다. 데이터 형식은 원의 개수 N$N$이랑 각 원의 중심 x$x$좌표, 원의 반지름 r$r$만 주어진다. 따라서, 2번 조건을 만족하는지만 확인하면 된다. 주어진 데이터가 해당 조건을 만족하는지 확인해보자. 입력 첫 번째 줄에는 원의 개수 N$N$이 주어진다. 두 번째 줄부터 N+1$N+1$번째 줄까지 원의 중심 x$x$좌표, 원의 반지름 r$r$이 ..

    [ 백준 2800 해설 ] ( python ) 괄호 제거

    📚 괄호 제거 문제 어떤 수식이 주어졌을 때, 괄호를 제거해서 나올 수 있는 서로 다른 식의 개수를 계산하는 프로그램을 작성하시오. 이 수식은 괄호가 올바르게 쳐져 있다. 예를 들면, 1+2, (3+4), (3+4*(5+6))와 같은 식은 괄호가 서로 쌍이 맞으므로 올바른 식이다. 하지만, 1+(2*3, ((2+3)*4 와 같은 식은 쌍이 맞지 않는 괄호가 있으므로 올바른 식이 아니다. 괄호를 제거할 때는, 항상 쌍이 되는 괄호끼리 제거해야 한다. 예를들어 (2+(2*2)+2)에서 괄호를 제거하면, (2+2*2+2), 2+(2*2)+2, 2+2*2+2를 만들 수 있다. 하지만, (2+2*2)+2와 2+(2*2+2)는 만들 수 없다. 그 이유는 쌍이 되지 않는 괄호를 제거했기 때문이다. 어떤 식을 여러 쌍..

    [ 백준 2504 해설 ] ( python ) 괄호의 값

    📚 괄호의 값 문제 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X가 올바른 괄호열이면 ‘(X)’이나 ‘[X]’도 모두 올바른 괄호열이 된다. X와 Y 모두 올바른 괄호열이라면 이들을 결합한 XY도 올바른 괄호열이 된다. 예를 들어 ‘(()[[]])’나 ‘(())[][]’ 는 올바른 괄호열이지만 ‘([)]’ 나 ‘(()()[]’ 은 모두 올바른 괄호열이 아니다. 우리는 어떤 올바른 괄호열 X에 대하여 그 괄호열의 값(괄호값)을 아래와 같이 정의하고 값(X)로 표시한다. ‘()’ 인 괄호열의 값은 2이다. ‘[]’ 인 괄호열의 값은 3이다. ‘(X)’ 의 ..