코딩테스트 8

[백준][Python] 1931번 회의실 배정 문제 해설, 정답코드 (그리디 알고리즘)

❗ 문제 접근법, 아이디어 1. 회의가 빨리 끝날수록 뒤에 더 많은 회의를 할 수 있다. 2. 회의가 끝나는 시간이 같다면, 회의 시작 시간이 빠른 회의가 우선된다. 2번이 무슨 소리냐면, # 1시에 시작하고 8시에 끝나는 회의, 8시에 시작하고 8시에 끝나는 회의 (1, 8) (8, 8) 이렇게 두 회의가 있을 때 (1, 8) (8, 8) 순서로 두면 두 회의를 다 진행할 수 있지만, (8, 8) (1, 8) 순서로 두면 앞에 있는 회의 1개만 진행할 수 있다. 그래서 회의 시간을 정렬할 때, 끝나는 시간 순으로 정렬하고 시작하는 시간 순으로 두 번 정렬해야 한다. # 끝나는 시간 기준으로 정렬하고 시작하는 시간 기준으로 정렬 arr.sort(key=lambda x: (x[1], x[0])) arr은 ..

코딩테스트 2022.10.08

[프로그래머스][Python] 약수의 개수와 덧셈 (약수의 개수가 짝수인지 홀수인지 판별하기)

import math def solution(left, right): answer = 0 for i in range(left, right+1) : sqrt = math.sqrt(i) if int(sqrt) == sqrt : answer -= i else : answer += i return answer 제곱수는 약수의 개수가 홀수이고, 제곱수를 제외한 모든 수는 약수의 개수가 짝수이다. ex) 9의 약수의 개수 : 3개, 6의 약수의 개수 : 4개 n의 제곱근을 구하고 int(제곱근)와 제곱근이 같다면, n은 제곱수이다. 그렇다면 n의 약수의 개수는 홀수라는 것을 알 수 있다.

코딩테스트 2022.10.07

[프로그래머스][C++] 두 수의 나눗셈 (int형 정수 나누기 소수점 얻기)

#include #include using namespace std; int solution(int num1, int num2) { return ((double) num1 / (double) num2) * 1000; } ㄴ 위 문제에 대한 풀이. C++ 에서의 나누기 C와 C++은 int형 정수로 나누기를 실행하면 소수점이 나오지 않는다. int형의 나누기를 할 때 소수점을 얻으려면 double형으로 형변환을 해주어야 한다. (float, long double도 가능) int a = 3; int b = 2; double c = a/b; // 1 double d = (double) a / (double) b;// 1.5 cout

코딩테스트 2022.10.02

[프로그래머스][Python] 핸드폰 번호 가리기

def solution(phone_number): answer = [] for i in phone_number : answer.append(i) for i in answer[:-4] : answer[answer.index(i)] = '*' result = ''.join(answer) return result ㄴ 내 풀이. for문이 두 개나 들어가고 상당히 길다. def hide_numbers(s): return '*' * (len(s) - 4) + s[-4:] ㄴ 다른 사람의 풀이 중 가장 좋았던 풀이. * 문자열을 len(s) - 4개 만큼 곱하고 그 뒤에 숫자 4자리를 더하는 방식이다. 왜 이렇게 간단한 풀이를 생각하지 못했을까ㅠ 더 많이 공부하고 코딩 테스트를 풀어봐야겠다.

코딩테스트 2022.10.01