Algorithm/BAEKJOON

    [백준 / Python 파이썬] 15787번 - 기차가 어둠을 헤치고 은하수를

    [Silver II] 기차가 어둠을 헤치고 은하수를 - 15787 문제 링크 분류 비트마스킹, 구현 문제 설명 N개의 기차가 어둠을 헤치고 은하수를 건너려고 한다. 기차는 20개의 일렬로 된 좌석이 있고, 한 개의 좌석에는 한 명의 사람이 탈 수 있다. 기차의 번호를 1번부터 N번으로 매길 때, 어떠한 기차에 대하여 M개의 명령이 주어진다. 명령의 종류는 4가지로 다음과 같다. 1 i x : i번째 기차에(1 ≤ i ≤ N) x번째 좌석에(1 ≤ x ≤ 20) 사람을 태워라. 이미 사람이 타있다면 , 아무런 행동을 하지 않는다. 2 i x : i번째 기차에 x번째 좌석에 앉은 사람은 하차한다. 만약 아무도 그자리에 앉아있지 않았다면, 아무런 행동을 하지 않는다. 3 i : i번째 기차에 앉아있는 승객들이..

    [백준 / Python 파이썬] 2641번 - 다각형그리기

    [Silver II] 다각형그리기 - 2641 문제 링크 분류 구현 문제 설명 모눈종이에 다각형을 그리려고 한다. 그리는 방법은 모양수열로 표시된다. 모양수열은 1과 4사이의 숫자가 연속되어 나열된 것으로 1은 오른쪽으로, 2는 위쪽으로, 3은 왼쪽으로, 4는 아래쪽으로 한 칸씩 그리는 것을 말한다. 예를 들어 아래 그림의 다각형 (2)는 점 A에서 시작하여 화살표 방향으로 모양수열 1411433322를 따라서 그린 것이다. 다각형 (3)은 점 B에서 시작하여 화살표 방향으로 모양수열 3221411433을 따라서 그린 것이다. 또한 다각형(4)는 점 C에서 시작하여 화살표 방향으로 모양수열 4411123323을 따라서 그린 것이다. 다각형 (2), (3), (4)는 다각형 (1)과 같으므로 모양수열들 1..

    [백준 / Python 파이썬] 16931번 - 겉넓이 구하기

    [Silver II] 겉넓이 구하기 - 16931 문제 링크 분류 기하학, 3차원 기하학, 구현 문제 설명 크기가 N×M인 종이가 있고, 종이는 1×1크기의 칸으로 나누어져 있다. 이 종이의 각 칸 위에 1×1×1 크기의 정육면체를 놓아 3차원 도형을 만들었다. 종이의 각 칸에 놓인 정육면체의 개수가 주어졌을 때, 이 도형의 겉넓이를 구하는 프로그램을 작성하시오. 위의 그림은 3×3 크기의 종이 위에 정육면체를 놓은 것이고, 겉넓이는 60이다. 입력 첫째 줄에 종이의 크기 N, M이 주어진다. 둘째 줄부터 N개의 줄에는 종이의 각 칸에 놓인 정육면체의 수가 주어진다. 출력 첫째 줄에 도형의 겉넓이를 출력한다. import sys input = sys.stdin.readline N, M = map(int,..

    [백준 / Python 파이썬] 26091번 - 현대모비스 소프트웨어 아카데미

    [Silver I] 현대모비스 소프트웨어 아카데미 - 26091 문제 링크 분류 그리디 알고리즘, 정렬, 두 포인터 문제 설명 현대모비스는 글로벌 자동차 부품 기업으로 자율주행, 커넥티비티, 전동화 분야에 역량을 집중해 스마트 모빌리티 시대를 선도하고 있는 기업입니다. 현대모비스는 소프트웨어 생태계 조성을 위해 소프트웨어 아카데미를 운영하고 있으며, 내부적으로는 연구원들의 소프트웨어 직무교육 이수를 통해 우수인재를 육성하고, 대외적으로는 채용 연계형 프로그램을 운영하여 취업 준비생들에게 소프트웨어 전문 교육을 무상으로 제공하고, 더 나아가 우수 이수자들을 채용하고 있습니다. 현대모비스에서 소프트웨어 아카데미 견학생을 모집한다고 한다. 이번 견학 활동은 모두 팀 단위로 진행되며 아래 두 조건을 모두 만족하..

    [백준 / Python 파이썬] 6503번 - 망가진 키보드

    [Silver I] 망가진 키보드 - 6503 문제 링크 분류 문자열, 두 포인터 문제 설명 상근이의 키보드가 망가졌다. 키보드의 일부 키는 작동을 해서 아직 입력을 할 수 있다. 상근이는 키보드의 레이아웃을 바꿔서 단어를 입력하려고 한다. 지금 키보드에서 작동하는 키의 개수는 m개이다. 상근이가 입력하려고 하는 문장이 주어졌을 때, 키보드의 레이아웃을 바꾸지 않고 입력할 수 있는 연속하는 문자의 최댓값을 구하는 프로그램을 작성하시오. 키보드의 한 키는 문자 하나에 매핑되고, 다른 키와 조합을 이용해서 문자를 입력할 수는 없다. 즉, 최대 m개의 서로 다른 문자로 이루어진 가장 긴 부분 문자열을 찾으면 된다. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있고, 각 테스트 케이스는 두 줄로 이루어져 있..

    [백준 / Python 파이썬] 25822번 - 2000문제 푼 임스

    [Silver I] 2000문제 푼 임스 - 25822 문제 링크 분류 다이나믹 프로그래밍, 두 포인터 문제 설명 이 문제는 문제 출제를 위해 꾸준히 문제를 풀어 2000문제 풀이를 달성한 임스가 처음으로 출제한 문제입니다. 임스는 문제 출제를 위해 매일 0 ~ 24문제를 풀었습니다. 임스가 스트릭을 끊기지 않기 위해 계속해서 문제를 풀었으나, 아쉽게도 며칠은 문제를 풀 수 없는 날이 생겼습니다. 임스는 문제를 풀지 못한 날엔 스트릭 프리즈를 통해 스트릭을 유지할 수 있습니다. 스트릭 프리즈는 0.99코인이고, 임스가 구매할 수 있는 최대의 양만큼 스트릭 프리즈를 구매합니다. 그러나 임스가 최대로 사용할 수 있는 개수가 2개입니다. 스트릭 프리즈를 사용할 경우, 해당 일자에는 문제를 풀었다고 가정하게 되..

    [백준 / Python 파이썬] 25214번 - 크림 파스타

    [Silver IV] 크림 파스타 - 25214 문제 링크 분류 다이나믹 프로그래밍, 그리디 알고리즘 문제 설명 민겸이는 크림 파스타를 먹다가 다음과 같은 문제를 생각해냈다. 빈 배열 A\(A\)가 있다. 민겸이는 A\(A\)의 맨 뒤에 정수를 N\(N\)번 추가하려고 한다. 수를 그냥 추가하기만 하면 재미없으니, 수를 추가할 때마다 1 ≤ i\(i\) ≤ j\(j\) ≤ |A|\(|A|\) 를 만족하는 정수 i\(i\), j\(j\)에 대하여 Aj−Ai\(A_j - A_i\)의 최댓값을 구하려고 한다. |A|\(|A|\)는 배열 A\(A\)의 현재 길이를 뜻하고, Ai\(A_i\)는 민겸이가 i\(i\)번째로 추가한 정수를 뜻한다. 민겸이가 식사를 마치기 전에 이 문제를 대신 풀어보자. 입력 입력은 두..

    [백준 / Python 파이썬] 15565번 - 귀여운 라이언

    [Silver I] 귀여운 라이언 - 15565 문제 링크 분류 슬라이딩 윈도우, 두 포인터 문제 설명 꿀귀 라이언 인형과, 마찬가지로 꿀귀인 어피치 인형이 N개 일렬로 놓여 있다. 라이언 인형은 1, 어피치 인형은 2로 표현하자. 라이언 인형이 K개 이상 있는 가장 작은 연속된 인형들의 집합의 크기를 구하여라. 입력 첫 줄에 N과 K가 주어진다. (1 ≤ K ≤ N ≤ 106) 둘째 줄에 N개의 인형의 정보가 주어진다. (1 또는 2) 출력 K개 이상의 라이언 인형을 포함하는 가장 작은 연속된 인형들의 집합의 크기를 출력한다. 그런 집합이 없다면 -1을 출력한다. import sys input = sys.stdin.readline N, K = map(int, input().split()) dolls =..