[Python] 백준/BOJ 19622번: 회의실 배정 3 (Silver 2)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 서준이는 아빠로부터 N개의 회의와 하나의 회의실을 선물로 받았다. 각 회의는 시작 시간, 끝나는 시간, 회의 인원이 주어지고 한 회의실에서 동시에 두 개 이상의 회의가 진행될 수 없다. 단, 회의는 한번 시작되면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작 시간은 끝나는 시간보다 항상 작다. N개의 회의를 회의실에 효율적으로 배정할 경우 회의를 진행할 수 있는 최대 인원을 구하자. 💡 Approach임의의 회의 K(1≤ K ≤ N)는 회의 K − 1과 회의 K + 1과는 회의 시간이 겹치고 다른 회의들과는 회의 시간이 겹치지 않는다.문제에서 이런 조건이 주어진다.어떤 한 회의는 이전 회의와 다음 회의와 겹친다.따라서..
[Python] 백준/BOJ 9047번: 6174 (Silver 5)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 1949 년 인도 수학자 Kaprekar는 Kaprekar 연산을 고안해 냈다. Kaprekar 연산은 네 자릿수 중 모든 자릿수가 같지 않은 수(1111, 2222 등을 제외한)의 각 자리의 숫자를 재배열해서 만들 수 있는 가장 큰 수와 가장 작은 수를 만들어서 그 차이를 계산하는데, 그 결과로 나온 새로운 숫자를 갖고 같은 과정을 반복하는 것이다. 간단한 연산이지만 Kaprekar는 이 연산이 놀라운 결과를 보여준다는 것을 발견했다. 올해 연도인 2008로 그 결과를 알아보자. 2008로 만들 수 있는 가장 큰 수는 8200이고 가장 작은 수는 0028이다. 8200 – 0028 = 8172 8721 – 1278 = 7443 7443 – 3447 = 3996 9963..
[Python] 백준/BOJ 20207번: 달력 (Gold 5)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 수현이는 일 년의 날짜가 1일부터 365일로 표시되어 있는 달력을 가지고 있다. 수현이는 너무나도 계획적인 사람이라 올해 일정을 모두 계획해서 달력에 표시해 놨다. 여름이 거의 끝나가자 장마가 시작되었고, 습기로 인해 달력에 표시한 일정이 지워지려고 한다. 지워지는 것을 막고자 수현이는 일정이 있는 곳에만 코팅지를 달력에 붙이려고 한다. 하지만 너무 귀찮았던 나머지, 다음과 같은 규칙을 따르기로 한다. 연속된 두 일자에 각각 일정이 1개 이상 있다면 이를 일정이 연속되었다고 표현한다. 연속된 모든 일정은 하나의 직사각형에 포함되어야 한다. 연속된 일정을 모두 감싸는 가장 작은 직사각형의 크기만큼 코팅지를 오린다. 달력은 다음과 같은 규칙을 따른다. 일정은 시작날짜와..
[Python] 백준/BOJ 17124번: 두 개의 배열 (Silver 3)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 정수 배열 A와 B가 있다. A는 총 n개의 서로 다른 양의 정수를 포함하고 B는 총 m개의 서로 다른 양의 정수를 포함한다. A, B를 이용해서 길이가 n인 새로운 배열 C를 만들어보자. C[i] 는 배열 B에 있는 값 중 A[i] 에 가장 가까운 값 (절댓값 차이가 가장 작은 값)으로 정의된다. 만약 이 조건을 만족하는 값들이 여럿 있는 경우, 그 중 가장 크기가 작은 값으로 정의된다.예를 들어 A = [20, 5, 14, 9] 그리고 B = [16, 8, 12] 라고 해보자. C[1] = 16 이다 - 왜냐하면 B[1] = 16이 A[1] = 20에 가장 가깝기 때문이다. C[2] = 8 이다 - 왜냐하면 B[2] = 8이 A[2] = 5에 가장 가깝기 때문이다...
[Python] 백준/BOJ 5376번: 소수를 분수로 (Silver 1)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 유리수 분수를 소수로 나타내면, 소수점 아래 자리가 유한 개인 경우(1/8 = 0.125)와 어떤 자리에서부터 일정한 숫자가 한없이 되풀이되는 경우(1/11 = 0.090909...)가 있다.소수를 입력받은 뒤, 분수로 나타내는 프로그램을 작성하시오. 예제 입력 1 30.50.(3)0.6(142857)예제 출력 1 1/21/343/70 💡 Approach순환소수를 분수로 나타내는 문제이다.순환소수를 분수로 변환하는 법을 노트에 정리해 봤다. 이를 바탕으로 구현하면 된다.입력을 슬라이싱해서 소수 뒷부분만 살펴보도록 했다. 주어진 소수가 유한소수일 경우, 분자는 소수 뒷부분 그대로이고 분모는 10^(소수 뒷부분 길이)가 된다. 주어진 소수가 무한소수(순환소수)일 경우, 소..
[Python] 백준/BOJ 18234번: 당근 훔쳐 먹기 (Gold 3)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 꽉꽉나라의 농부 오리는 아무것도 심어져 있지 않은 텃밭을 하나 가지고 있다. 오리는 그 텃밭에 N종류의 당근을 하나씩 심고 T일 동안 재배할 예정이다.당근 i(1 ≤ i ≤ N)는 처음에는 wi의 맛을 가지고 있고, 각 당근 i에 사용할 pi만큼 맛을 증가시켜 주는 영양제가 당근 종류별로 T개씩 준비되어 있다. 오리는 당근이 본래의 맛보다 훨씬 맛있어지기를 바라기 때문에 pi는 항상 wi이상의 값을 가지도록 준비했다. 잠이 많은 오리는 매일 오전에만 텃밭에 나와 당근들을 관리한다. 오리는 각 당근 i에 대해 당근 i가 자리에 없다면 당근 i를 심고, 그렇지 않다면 당근 i에 영양제를 하나 준다.꽉꽉나라에 놀러 온 토끼는 오리가 오전에만 당근을 관리한다는 사실을 알고 오리..
[Python] 코드트리: 민트 초코 우유 (L12)
·
Algorithm/코드트리
💻 Problem문제 보러 가기 삼성 SW 역량 테스트 기출 - 2025 상반기 오전 1번 문제 💡 Approach1. 아침 (morning)모든 학생이 신앙심 1 얻기 but, 점심에 그룹원들이 각자 신앙심을 1씩 대표자에게 넘길 예정이기 때문에 이를 상쇄시킬 수 있다.아침에 신앙심을 얻는 것(+1)과 점심에 대표자에게 신앙심을 넘기는 것(-1)이 상쇄돼서 아무 행동도 하지 않는다. 대신 점심에 대표자에게만 신앙심을 주면 된다. 2. 점심 (afternoon)신봉 음식이 같으면서 연결되어 있는(인접한) 학생들끼리 그룹을 형성한다.bfs로 학생들끼리 연결되어 있는지 확인한다. 그룹을 형성할 때(bfs) 대표자도 함께 찾는다.그룹원들 중 신앙심이 가장 크면서 행 번호, 열 번호가 더 작은 학생이 대표자..
[Python] 백준/BOJ 2597번: 줄자접기 (Silver 3)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 준성이는 1㎝ 간격으로 눈금이 매겨져 있는 줄자를 가지고 있다. 그 줄자에 있는 서로 다른 눈금 6개에 한 눈금에 하나씩 점이 찍혀 있는데, 빨간 점, 파란 점, 노란 점이 각각 두 개씩 있다.준성이는 먼저 빨간 점이 만나도록 줄자를 접었다. 그런 후 두 파란 점이 만나도록 줄자를 접고, 또다시 두 노란 점이 만나도록 줄자를 접었다. 줄자는 투명하여 접더라도 점들을 잘 볼 수 있다. 어떤 색깔의 두 점이 만나도록 줄자를 접었을 때, 그다음에 접으려는 색깔의 두 점이 이미 만나고 있으면, 그 두 점에 대해서는 줄자를 접지 않는다.예를 들어 길이 10㎝ 인 줄자에 아래 그림과 같이 2㎝ 와 7㎝ 위에에 두 빨간 점이 찍혀 있고, 5㎝ 와 4㎝위치에 파란 점이, 10㎝ 와 3..