이진법을 이용해서 문제를 쉽게 접근하였다.
조합론을 이용하여 다리를 놓을 수 있는 모든 경우의 수를 계산한다.DP를 이용하여 문제를 해결한다.
브루트포스 알고리즘(Brute Force)완전탐색 알고리즘. 즉, 가능한 모든 경우의 수를 모두 탐색하면서 요구조건에 충족되는 결과만을 가져온다.나눠진 부분의 최소 길이가 1이 되어야 하므로 앞에서부터 슬라이싱하여 접근하면 해결할 수 있을 거라고 생각했다.
처음에는 일일이 연도/월/일을 나눠서 계산해줘야겠다는 무리한 풀이로 들어갔다가 한계에 직면하고 다시 구글링하여 날짜 계산을 할 수 있는 패키지인 datetime을 사용해서 문제를 해결했다.(실제 코딩테스트에서도 이렇게 사용할 수 있는지는 모르겠다...)d_day.day
우리가 나눗셈 연산을 수행할 때 제수(분모)가 피제수(분자)로 나누지 못할 경우 숫자의 뒤에 0을 붙여 연속적으로 나눗셈 과정을 수행한다. 숫자 뒤에 0을 붙인다 = 10을 곱한다
문제에서 교감선생님이 압수한 귀걸이의 타입을 임의대로 작성한 부분이 있었는데 이 부분은 문제풀이에 영향을 미치지 않을 것이라고 판단하여 과감하게 사용하지 않았다.
2차원 배열을 만들어 섞어먹으면 안되는 조합의 위치를 따로 표시해준다.다음 그림은 문제의 테스트케이스를 기준으로 설명한 그림이다.1\. 1번과 2번(1번 2번을 고르든 2번 1번을 고르든 동일함)2\. 3번과 4번(3번 4번을 고르든 4번 3번을 고르든 동일함)3\.
입력받은 가격들을 내림차순으로 정렬하고 pop(0)을 이용해서 맨 앞에 있는 원소를 가져온다.해당 원소의 25% 할인된 가격이 가격 리스트에 존재하는 경우 할인가격을 할인가격 리스트에 저장하고 해당 할인가격을 입력받은 가격 리스트에서 제거한다.
이항계수에 대한 문제로 다이나믹 프로그래밍을 이용하면 시간복잡도를 줄여 효율적인 코드를 작성할 수 있다.정수 n과 k가 주어졌을 때 파스칼의 삼각형에 있는 n번째 행에서 k번째 수를 이항계수를 이용해서 표현하면 이항계수 C(n-1, k-1)가 된다는 사실을 미리 알려주
공격 순서는 초 → 말 순서로 이어진다는 점을 명심할 것
주어진 문자열의 길이를 서로 동일하게 만든 다음 두 문자열이 일치하게 된다면 1을, 불일치하게 된다면 0을 출력한다.
셀프넘버는 양의 정수 n에 대하여 n과 n의 각 자릿수를 더하는 과정을 거쳐 만들 수 있다.💡소요시간 : 5m
소수란 1과 자기자신만을 약수로 가지는 수를 말한다.💡소요시간 : 1m
크로아티아 알파벳과 대응되는 부분을 하나로 처리하기 위해 replace()를 사용했다. replace() 함수의 결과값을 따로 저장하지 않아 약간 시간을 허비했던 문제였다.💡소요시간 : 11m
단순 정렬 문제한 두줄 입력받는 문제들과 다르게, 반복문으로 여러줄을 입력 받아야 할 때는 input()으로 입력 받는다면 시간초과가 발생할 수 있다.테스트케이스의 개수 T를 입력하는 과정은 상관없지만 반복문으로 여러 줄을 입력받아야 하는 상황이라면 반드시 sys.st
단어를 두 가지 순위로 매겨진 조건에 맞게 정렬하는 문제로 key를 이용한 정렬을 사용하면 해결할 수 있겠다고 생각했다.문제에서 중복 입력된 단어는 하나로 처리해서 출력되도록 요구했으므로 set 키워드를 사용하여 자료형을 집합으로 변환하여 출력하면 된다.
등수를 어떻게 매겨야할지 고민을 많이 했던 문제였다.각 참가자의 스텟을 서로 비교한 다음 기준이 되는 참가자의 스텟보다 상대방의 스텟이 모두 높다면 등수는 낮아지므로 등수를 1씩 증가시켜 값을 저장해주는 방법을 생각했다.
입력받은 문자열을 배열로 선언하여 내림차순으로 정렬하여 숫자형으로 변환해주면 해결가능💡소요시간 : 2m
1은 소수가 아니라는 점을 주의하자전체적으로 코드가 길다는 느낌이 강하게 들었고 나중에 에라토스테네스의 체를 이용해서 다시 한 번 풀어봐야겠다.
두 가지 순위의 조건을 충족시키도록 정렬을 수행하라는 문제로 key를 이용하면 수월하게 해결할 수 있다고 생각했다.
정렬을 이용하면 간단하게 문제를 해결할 수 있다.💡2m
처음엔 매우 큰 수까지 범위를 설정하여 배열을 선언한 후 666이 포함된 숫자들만을 따로 추출하여 정답을 도출하려했으나 메모리 초과가 발생했다. 사용하지 않는 메모리가 발생할 수 있고 범위가 제한적이지 않으므로 매우 비효율적인 방법이다.while문을 사용하여 666이
두 문제의 차이는 정렬 기준에 대한 차이만 있을 뿐 나머지 조건은 전부 동일함💡소요시간 : 0m
조합을 이용해서 문제를 해결할 수 있다.팩토리얼의 값을 DP를 활용해서 선언한 후 이를 이용해 다리를 놓을 수 있는 경우의 수를 계산한다.💡소요시간 : 3m
직접적으로 정답을 보지 않고 알고리즘 분류에 적혀 있던 자료 구조와 큐를 직접 구글링하여 어떤 자료 구조인지 명확히 인지한 다음 이 자료 구조를 이용해서 어떻게 작성해야할지 고민했다.선입선출(FIFO)이란, 먼저 들어간 데이터가 먼저 밖으로 나온다는 의미이다.파이썬에서
단순 비교 문제라고 판단하였고 이중 반복문을 이용해서 서로 비교하여 가지고 있는 카드라면 1을 추가했고 가지고 있지 않은 카드라면 0을 추가하는 방식으로 코드를 작성했으나 시간 초과가 발생했다.상근이가 가지고 있는 숫자 카드에 적혀있는 수는 같은 수가 적혀있는 경우는
N!의 값을 10으로 나눠주는 과정을 반복하면 간단하게 해결할 수 있을 것이라고 생각했다.💡소요시간 : 1m
연도의 값을 1씩 증가시키면서 연도를 각각 15, 28, 19로 나누었을때의 나머지가 E, S, M이 나오는 경우 break문을 실행시켜 연도가 출력되게끔 코드를 작성했는데 시간초과가 발생했다.(E=15, S=28, M=19의 경우 답을 출력하지 못했다.)나머지 정리에
6은 9로 뒤집어서 사용을 할 수 있다. 마찬가지로 9 역시 6으로 뒤집어서 사용할 수 있다.만약 6의 개수와 9의 개수의 합이 홀수라면 올림을 해줘야한다.💡소요시간 : 25m
명령의 길이에 따라서 어떤 명령을 수행할 것인지 분류하여 코드를 작성했다.💡소요시간 : 10m
64cm → 32cm → 16cm → 8cm → 4cm → 2cm → 1cm이진법을 이용
자연수 S의 값이 음수가 나올 때까지 loop를 돌린 후 음수가 나오기 직전 N의 값을 출력한다.💡소요시간 : 2m
100 × 100 사이즈의 종이를 2차원 배열로 선언한 다음 색종이로 덮는 부분의 값을 0 → 1로 변화시켜준다.2차원 배열을 돌면서 1로 체크된 부분을 모두 더해 색종이로 덮힌 부분의 넓이를 구한다.
N행 M열의 배열을 만들어 범위를 만족하는 2차원 배열 요소들의 합을 구한다.📌 Python으로 제출한 결과 시간 초과가 출력되어 PyPy3로 제출했더니 정상적으로 출력되었다.
매우 간단한 문제였다. 정렬하고 해당 인덱스에 있는 값을 출력하면 되는 문제였다.💡소요시간 : 3m
문제를 유심히 관찰하고 여러 예제를 통해 알게 된 사실을 일반화하여 문제를 쉽게 해결할 수 있었다.1\. 돌의 개수가 홀수 개인 경우 : 무조건 '상근이'가 이긴다.2\. 돌의 개수가 짝수 개인 경우 : 무조건 '창영이'가 이긴다.💡소요시간 : 2m
💡문제접근 > 처음에는 각 문자열을 돌면서 값이 달라지는 기점에서 값들을 리스트에 저장하면서 하려고 했으나 한계에 부딪혀 일반화의 방법을 이용했다. |제목|내용|설명| 💡코드 > 💡소요시간 : 44m
정말 간단한 방법으로 문제를 해결할 수 있었다.알고리즘 분류 중 하나였던 투 포인터를 보고 이를 이용해서 코드를 작성했다.
대학 전공과목이었던 AI기초프로그래밍의 수업 내용을 기억하여 행렬의 곱셈을 돌려 보았다.행렬 곱셈의 주의 사항 : (3×2)행렬과 (2×3)행렬을 곱한 결과와 (2×3)행렬과 (3×2)행렬을 곱한 결과는 다르다.행렬의 곱셈을 수행할 때는 먼저 나온 행렬의 가로줄과 뒤에
중복을 빼라는 말을 집합자료형으로 변환하라는 의미로 해석하고 문제를 풀었다.💡소요시간 : 1m
상위 5개 문제 점수의 합을 구하기 위해 점수를 내림차순 정렬한 리스트를 별도로 하나 더 만들어서 문제를 접근했다.
리스트에 append와 remove를 이용해서 요소를 추가, 제거하는 간단한 문제라고 생각하여 그대로 코드를 작성했지만 시간초과가 발생했다.전에 풀었던 문제에서 set자료형이 list자료형보다 시간 복잡도 측면에서 효율성이 좋다고 했던 사실을 기억하여 문제를 set으로
카드를 버리고 그 다음 카드를 제일 아래로 옮긴다는 부분을 remove와 append를 이용해서 코드로 작성했다.💡소요시간 : 2m
다음과 같은 세 가지 우선순위에 의해 매겨진 조건을 통해 각 국가를 정렬했다.1\. 금메달 수가 더 많은 나라(금메달 수로 내림차순 정렬)2\. 금메달 수가 같으면 은메달 수가 더 많은 나라(은메달 수로 내림차순 정렬)3\. 금, 은메달 수가 같으면 동메달 수가 더 많
버튼을 누를 때마다 변화 과정을 표로 그려봤더니 규칙성을 확인할 수 있었다. 규칙성이 성립되기에 점화식을 세울 수 있었다.A의 i번째 항과 A의 (i+1)번째 항을 더하면 A의 (i+2)번째 항이 나온다. B역시 A와 동일한 규칙성을 가진다.
일반적인 내림차순 정렬 문제였는데 python으로 제출했더니 시간초과가 발생해서 PyPy3로 제출했더니 정상적으로 통과되었다.💡소요시간 : 3m
피보나치 수열에 대한 문제이다. 피보나치 수열에 대한 설명은 생략한다.💡소요시간 : 1m
연도를 기준으로 1차 정렬, 월을 기준으로 2차 정렬, 일을 기준으로 3차 정렬을 하면 맨 처음 나오는 요소는 가장 나이가 많은 사람이 되고 맨 마지막에 나오는 요소는 가장 나이가 적은 사람이 된다.💡소요시간 : 4m
각 타일의 한 변의 길이의 변화에 대한 정사각형의 둘레를 표로 나타내면 다음과 같다.배열의 i번째 항과 (i+1)번째 항을 더하면 (i+2)번째 항이 나온다.💡소요시간 : 4m
replace()를 이용해서 문제를 해결할 수 있었다.
math패키지를 사용하여 문제를 간단히 해결할 수 있었다.💡소요시간 : 1m
각 클래스별 데이터를 정렬해서 max와 min을 사용해서 가장 높은 점수와 가장 낮은 점수를 구하고 인접한 점수들의 차이를 구해서 점수 차이보다 큰 값을 가진다면 최댓값을 갱신해주는 방식으로 코드를 작성했다.💡소요시간 : 8m
입력된 DNA 염기 서열을 각 자리마다 비교하여 Hamming Distance의 합이 가장 작은 DNA를 문자열로 추가해준다. 여기서 Hamming Distance의 합이 가장 작도록 하려면 사용 빈도가 잦은 DNA 염기를 문자열에 추가해주면 된다. 그리고 해당 DNA
가로로 자른 지점과 세로로 자른 지점의 값을 추가하여 이중 반복문을 돌려 각 종이의 면적을 추가하고 최댓값을 구하는 과정을 코드로 작성했다.💡소요시간 : 8m
대문자 U, C, P, C가 나오는 경우 인덱스를 증가시켰고 인덱스가 해당 값에 다다르면 멈추고 I love UCPC를 출력할 수 있게 하고 인덱스의 값이 해당 값보다 작거나 아니면 해당 값을 넘어선다면 I hate UCPC를 출력할 수 있도록 했다.💡소요시간 : 1
문제에서 주어진 큰 수를 주어진 조건에 부합할 때까지 계속 반복 작업을 거치면서 문제 변환의 과정 횟수를 증가시켜주고 결과적으로 반환된 숫자가 3의 배수인지 확인하는 간단한 문제였다.개인적으로 코드의 간결성이 좀 떨어진다고 생각한다. 코드를 작성하면 언젠가는 늘겠지..
익숙한 파스칼의 삼각형 문제이다. 조합론을 이용해서도 해결할 수 있는 문제지만 다이나믹 프로그래밍을 이용해서 문제를 해결해보려고 노력했다.💡소요시간 : 2m
만약 거스름돈이 5의 배수라면 5로 나눈 몫만큼 동전의 개수를 추가해주고 5의 배수가 아니라면 2씩 빼주면서 거스름돈의 개수를 하나씩 증가시켜준다.이 때, 만약 거스름돈의 액수가 0원이 된다면 거스른 동전의 개수를 출력해주고 만약 1이거나 음수가 나오면 거슬러 줄 수
math패키지를 사용하여 최소공배수를 간단하게 구할 수 있었다.💡소요시간 : 1m
브루트포스 알고리즘을 적용해야겠다는 생각이 먼저 들었다. 일일이 하나하나 전부 확인해서 최적의 해를 찾아내는 것이 이 문제의 해답이다.처음에 100%가 나와서 정답으로 알았는데 자세히 보니 맞왜틀이 나와서 어디가 문제인지 모르고 있었다가 질문 게시판에 있는 맞왜틀 사람
두 수를 최대한으로 약분하기 위해서 최대공약수를 구해줬다. 그 다음 n, m을 최대공약수로 나누면 최대한으로 약분한 결과가 나오게 된다.💡소요시간 : 3m
묘목을 심는데 1일이 소요된다. 근데 나무를 심는 순서를 신중하게 골라 이장님을 최대한 빨리 초대한다고 했다. 따라서 자라는데 오래 걸리는 나무를 먼저 심어 최대한 기간을 단축시킬 수 있다.💡소요시간 : 2m
문제 이해를 제대로 못했다. 테스트케이스로 주어진 17진법 수 2를 8진법으로 바꿔도 2가 나와서 도저히 어떤 부분에서 이해를 못하고 있는 것인지 계속 돌아보다가 질문 게시판에 나와 같은 부류의 사람들이 존재하는 것을 알고 그 글을 읽었는데 어떤 사람이 문제에 대한 보
투 포인터와 조건문을 적절히 활용하면 문제를 해결할 수 있다.만약 N보다 작다면 포인터의 끝 값을 1만큼 증가한다.만약 값이 N이라면 포인터의 끝 값을 1만큼 증가시키고 개수를 증가시켜준다.만약 값이 N보다 크다면 포인터의 시작값을 1만큼 증가한다.💡소요시간 : 9m
조합은 순서를 고려하지 않고 고르는 방법이다.예를 들어 섞어 먹으면 안되는 조합 번호로 1 2가 나온 경우라면 2 1 역시 동일한 방법으로 계산한다는 의미로 볼 수 있다.이를 고려해 해당 조합 번호가 나온 경우 False로 값을 저장하여 삼중 반복문을 통해 이를 거르는
처음에 작성했던 코드로 제출을 했더니 93%에서 ValueError가 출력되었는데 하나의 반례가 존재하기 때문에 발생하는 오류였다. 만약 다솜이 혼자 단독 입후자의 경우 매수해야할 후보자의 표가 존재하지 않기 때문에 이 부분에 대한 오류를 처리해줬더니 정답으로 출력되었
스네이크버드는 과일 하나를 먹으면 길이가 1만큼 늘어나고 자신의 길이보다 작거나 같은 높이에 있는 과일들은 모두 먹을 수 있다는 부분을 코드로 작성하여 해결할 수 있었다.💡소요시간 : 5m
문제에 대한 이해는 어렵지 않았는데 이를 코딩으로 옮기는 과정에서 계속 번번이 막혀서 시간이 좀 오래 걸렸던 문제였다.질문게시판에 있는 반례 일부는 통과했지만 일부는 통과되지 않아서 계속 오답을 반복했다.①. 만약 시작 지점의 값이 사과가 떨어지는 지점보다 왼쪽에 있다
이중 반복문을 통해서 주어진 단어를 세 부분으로 나눈 다음 ::-1을 통해 뒤집고 단어를 모두 합쳐 리스트에 저장하여 리스트를 오름차순으로 정렬한 다음 맨 처음 나오는 요소를 출력하도록 코드를 작성했다. 그리 어렵진 않았다.💡소요시간 : 9m
비내림차순으로 정렬 = 오름차순으로 정렬PyPy3와 Python 두 가지 언어로 제출💡소요시간 : 2m
나눗셈을 수행하고 그 값을 문자로 처리하여 소수점 아래 구하고자하는 위치에 있는 값을 출력하도록 했지만 런타임에러(IndexError)가 출력되었다. 질문게시판에 있는 내용 위주로 먼저 찾아봤더니 이 문제는 나눗셈의 수학적 과정에 대한 이해를 토대로 접근해야한다는 글이
combinations 패키지를 사용해서 각각의 경우를 탐색한 다음 세 수의 합에서 일의 자리 수가 가장 크게 되도록 세 수를 선택해서 참가자의 번호와 그 합의 일의 자리 수를 리스트에 저장했다. 그 다음 참가자의 번호와 합의 일의 자리 수를 저장한 리스트를 1차적으로
조건이 너무 많아서 한 번에 조건을 정리하기에 너무 복잡하여 세 가지 조건을 판별해주는 함수를 하나하나 차근차근 작성하면서 접근했다.①. 모음(a, e, i, o, u) 하나를 반드시 포함하여야 한다.②. 모음이 3개 혹은 자음이 3개 연속으로 오면 안된다.③. 같은
현재 지점으로부터 동쪽에 구름이 존재한다면 구름이 존재한다는 뜻을 나타내는 변수인 is_cloud에 bool값을 넣어 참거짓을 가려주고 지금부터 몇 분뒤 처음으로 하늘에 구름이 오는지를 구하기 위해 구름이 있던 지점의 값을 is_cloud_location에 저장하여 각
반지는 문자열의 시작과 끝이 연결된 형태로 문자가 새겨져 있다고 했다. 원형의 반지를 생각하면 이해가 쉬울 것이다. 문제를 해결하기 위해서 반지에 새겨진 문자열을 2배의 길이로 늘려서 생각해보았다. 2배만 늘려주어도 찾고자 하는 문자열을 찾을 수 있기 때문에 2배만 해
대각선의 교차점이 발생하려면 대각선이 적어도 2개가 그려져야한다. 대각선이 2개가 그려진다는 말은 다각형의 꼭짓점 중 4개를 선택한다는 말과 동일하다. 따라서 조합을 이용하여 해결할 수 있을 것이라고 생각했다.(n개의 꼭짓점 중에서 4개의 꼭짓점을 선택하는 경우의 수)
A는 B로 무조건 바뀔 수 있다.💡소요시간 : 2m
일단 대회에 참가하는 학생들을 점수를 기준으로 내림차순 정렬을 적용한 다음 경우를 나누어서 생각해보았다.만약 금메달 수상자와 은메달 수상자의 국가 번호가 동일하다면 첫 번째와 두 번째를 제외한 그 다음 학생부터 조건을 비교하여 동메달 수상자를 출력한다.만약 금메달 수상
경기는 1회 초->1회 말->2회 초->...->9회 초->9회 말 순서로 진행된다는 점을 유념해두고 접근했다.💡소요시간 : 5m
그냥 정렬 문제였다.💡소요시간 : 1m
①. x축 방향으로 ±2만큼 이동하고 y축 방향으로 ±1만큼 이동②. x축 방향으로 ±1만큼 이동하고 y축 방향으로 ±2만큼 이동③. 한 번 방문했던 지점은 재방문이 불가하다.💡소요시간 : 1h
입력값으로 점 A, B, C의 좌표가 주어져있다. 이 때, 점 A, B, C가 일직선 상에 존재한다면 평행사변형을 만들 수가 없다. 따라서 직선 AB의 기울기와 직선 AC의 기울기가 같다는 것을 수학적으로 바꿔 표현하면 ZeroDivisionError을 피하면서 문제의
딕셔너리를 이용해서 빈도 수를 저장한 다음 value값을 출력할 수 있도록 코드를 작성했다. 딕셔너리를 이용한 방법도 많이 연습해봐야겠다.
되게 간단하다고 생각했는데 뜻대로 이루어지지 않아서 시간이 좀 오래 걸렸던 문제였다.number를 입력받아서 그대로 사용한다면 다음 B진법에 대하여 회문인지 아닌지 판별할 수 없는 상황이 되어버리는데 그 과정을 못 봐서 시간이 좀 오래 걸렸다.별도의 temp를 두고 생
즐겨찾기 기능을 사용하는 경우와 즐겨찾기 기능을 사용하지 않는 경우를 비교해서 최솟값을 출력하는 방법으로 코드를 작성했다.💡소요시간 : 7m
에라토스테네스의 체를 이용해서 소수를 먼저 구해야겠다는 생각을 먼저 했는데 어디까지 구해야할지 고민하다가 N의 값 범위를 보고 알 수 있었다.연속한 두 소수의 곱의 최댓값은 101 × 103 = 10403이므로 103이하의 소수를 구해주면 된다.💡소요시간 : 6m
소수 형식의 값을 입력해주기 때문에 float()을 이용해야겠다고 생각했다.sys를 사용하지않고 출력했더니 시간초과가 발생했다. sys만 사용해주면 해결할 수 있는 문제다.💡소요시간 : 2m
두 문자열의 길이를 같게 만들어주기 위해서 최대공약수를 구해 두 문자열의 길이가 같게끔 적절히 조작해준다.두 문자열의 길이를 같게 설정해주고 그 다음 같은 문자열을 만드는지 아닌지 구하면 된다.💡소요시간 : 3m
이중 반복문을 돌리면서 같은 하나의 단어를 두 번 합치는 잘못을 범해 시간이 오래 걸렸다.조합을 이용해서 코드를 수정했더니 정상적으로 출력되었다.💡소요시간 : 18m
문제를 이해하고 코드를 작성했는데 계속 WA가 출력되어 질문게시판에 있는 반례 내용 및 문제 내용 설명을 찾아봤는데 어떤 사람의 질문 대답을 듣고 명확히 이해했다.연속적으로 빈 칸을 모두 차지해야 한다. 예를 들어, 가로로 3칸이 연속해서 비어있고 이곳에 가로로 눕고
그냥 간단한 정렬 문제였다.💡소요시간 : 1m
입력이 끝날 때 종료를 요구하는 문제였는데 이는 EOFError로 예외처리를 적용해주면 해결할 수 있다.t의 길이만큼 반복문을 돌려 s와 동일한 문자열을 만들 수 있다면 Yes를 출력하고 그렇지 않으면 No를 출력한다.💡소요시간 : 10m
vote_information : 후보자 선거 번호와 후보자 득표 수를 저장한 리스트total_vote : 선거에서 나온 전체 득표 수vote_information을 1차적으로 득표 기준 내림차순 정렬을 수행하고 2차적으로 후보자 번호를 기준으로 오름차순 정렬을 수행했
각 알파벳 대문자의 획수를 딕셔너리를 이용해서 저장하고 길이가 2가 될 때까지 반복문을 돌린 후 이름 궁합의 결과를 출력한다.이 때, 십의 자리가 0 즉, 한 자리 값의 경우 두 자리로 출력하라고 했으므로 이 부분에 대해서는 경우를 나누어 코드를 작성했다. 답에 맞춘
n개의 논문들에 대한 인용횟수를 오름차순 정렬한 후에 값이 조건에 맞는지를 확인하는 과정을 거쳐 최종 답을 출력했다.한 학생이 발표한 총 n(n ≥ 1)편의 논문 중에서, k번 이상 인용된 논문이 k편 이상이고 나머지 n − k 편의 논문들 인용회수가 각각 k 번 이하
재귀 알고리즘을 공부할 수 있는 가장 기초적인 문제다.💡소요시간 : 11m
백트래킹 알고리즘으로 문제를 접근해서 여러 개의 테스트케이스가 통과되었지만 일부 코너 케이스로 인해서 WA를 받았고 결국 최후의 방법인 itertools를 이용했다. 백트래킹을 공부한다는 차원에서 백트래킹 코드도 추가하여 포스팅해야겠다.💡소요시간 : 1h
처음에 규칙을 찾기가 어려웠는데 무작위로 이렇게 저렇게 작성하다보니 우연찮게 얻어 걸린 문제였다.💡소요시간 : 21m
딕셔너리, 조건문 등 여러 방법이 있었는데 그냥 조건문을 이용했다.💡소요시간 : 10m
버거, 사이드, 음료의 가격을 내림차순 정렬을 수행한 다음 하나씩 고를 수 있는 최소의 길이를 구해서 그 길이가 될 때까지는 할인율 10%를 적용하고 나머지는 그냥 총합에 더해주는 방식으로 계산한다.💡소요시간 : 14m
💡소요시간 : 1h
💡소요시간 : 7m
전체 이수 학점은 전공 학점과 비전공 학점으로 구성되는데 졸업을 위해선 전공 학점과 전체 이수 학점의 조건이 주어지는데 여기서 전공 학점을 우선적으로 먼저 수강해도 문제가 없기 때문에 전공 학점에 초점을 맞추고 만약 더 들을 수 있다면 비전공 학점을 더 들을 수 있도록
최대 이익을 내기 위해서는 매수시점과 매도시점을 정확히 파악하고 싼 값에 매수를 하고 비싼 값에 매도를 한다는 점을 명심하고 코드를 작성했다.💡소요시간 : 9m
문제의 표현을 처음 봤을 때 한 번에 이해하지 못했다. 결국 노트에 그려가면서 여러 번 해 본 결과 이해할 수 있었고 여기서 비내림차순은 오름차순이 아니라는 것을 기억할 필요가 있다.💡소요시간 : 48m
직사각형을 구성하는 범위 내에 존재하는 좌표의 값을 1로 바꾸고 마지막에 총합을 구해주면 된다.💡소요시간 : 11m
제곱수를 잘 활용하면 해결할 수 있는 문제💡소요시간 : 9m
삼각형의 결정조건 : 가장 긴 변의 길이가 다른 두 변의 길이의 합보다 작아야 한다.💡소요시간 : 18m
책은 탑처럼 쌓여있기 때문에 무게가 가장 많이 나가는 것부터 넣을 수 없다.맨 위에서부터 책을 하나하나 넣고 이 무게가 최대 무게를 넘으면 박스를 하나 추가하고 새로운 박스에 최대 무게를 넘게 만든 책을 넣어준다.마지막에 넣은 것들은 for문 루프 밖에서 별도로 처리해
Counter 클래스를 이용해서 문제를 해결했다. 선영이와 상근이가 보유하고 있는 CD의 개수가 다를 수 있으므로 두 사람 중 CD를 적게 가지고 있는 사람을 기준으로 하여 key값을 가지고 있는지 여부를 확인해 두 사람이 동시에 가지고 있는 CD의 개수를 출력해주는
버블 정렬 느낌의 코드💡소요시간 : 21m
투명 종이의 개수만큼 반복해 사각형 영역에 해당하는 좌표의 값을 1만큼 증가시키고 마지막에 2중 Loop를 통해서 M 이하의 값이라면 보이는 영역, M 초과의 값이라면 안 보이는 영역으로 계산해 안 보이는 영역의 넓이를 계산하는 전형적인 시뮬레이션 문제💡소요시간 :
규칙성을 파악하면 충분히 해결할 수 있는 문제💡소요시간 : 3m
(첫 날 자신이 먹었던 사료의 양 + 첫 날 양 옆의 돼지가 먹었던 사료의 양 + 첫 날 맞은편의 돼지가 먹었던 사료의 양)의 결과를 하루에 배급받는 사료의 양 N에서 빼면서 0 미만의 값이 나오는 시점에 무한루프를 종료시키고 돼지들의 요구를 들어줄 수 없는 날을 출력