반응형
문제 설명 제한사항 입출력 예 Solution.py 초항 K가 5일 때 콜라츠 추측으로 계산하면 다음과 같은 수열이 나옵니다. [5, 16, 8, 4, 2, 1] 나온 수열 대로 그래프를 그려보면 아래와 같은 그림이 나옵니다. 여기서 각 꼭지점마다 선을 그어서 사다리꼴 사각형을 만들 수 있습니다. 여기서 기억나지 않는 사람들 위해 사다리꼴 사각형이란 무엇인지에 대해 설명하자면 평행한 변이 있는 사각형, 즉 마주 보는 한 쌍의 변이 서로 평행한 사각형을사다리꼴이라고 합니다. 이제 문제의 답을 구하기 위한 각 구간의 넓이를 구해야하는데 그림을 보면 사다리꼴 넓이로 구간의 넓이를 구할 수 있어 보입니다. 각 사다리골 사각형들의 넓이를 구해 구간의 넓이를 구해 봅시다. 사다리꼴 넓이는 ((윗변+아랫변) * 높이..
문제 설명 제한사항 입출력 예 Solution.py 정답률이 낮은 문제이지만 생각보다 간단하게 풀 수 있습니다. 입출력 예제 2번 그림을 통해 설명해보겠습니다. 1. 첫 행부터 ~ 마지막 행에 있는 파일 중에 제일 처음 파일이 있는 행과 마지막에 파일이 있는 행을 찾아봅시다. 그러면 다음과 같이 표시 됩니다. 2. 첫 열부터 ~ 마지막 열에 있는 파일 중에 제일 처음 파일이 있는 열과 마지막에 파일이 있는 열을 찾아봅시다. 그러면 다음과 같이 표시 됩니다. 3. 표시된 파일을 사각형의 경계로 하여 사각형을 그려봅니다. 그러면 사각형은 다음과 같이 그릴 수 있습니다. 4. 이제 이 사각형의 시작 점 (1, 3 ) 끝나는 점(5, 8) 을 result로 반환하면 [1, 3, 5, 8] 이 됩니다. 이제 아래..
문제 설명 제한사항 입출력 예 Solution.py 이 문제를 풀기 위해 2개의 딕셔너리를 활용했는데 하나는 달리기 순위를 key로 갖고 선수 이름을 value로 갖는 rank_Dic 다른 하나는 선수 이름을 key로 갖고 달리기 순위를 value로 갖는 player_Dic 으로 만들었습니다. 두 개의 딕셔너리를 활용하는 이유는 아래의 코드를 보면 이해되겠지만, 순위가 변경될 때 서로의 value값을 참조하기 때문입니다. 서로의 value값을 참조하며 callings 배열에 있는 선수들 정보를 가지고 이름을 불린 선수와 그 선수의 앞에 있는 선수를 서로 변경하여 마지막으로 result 에 맞도록 rank_Dic의 value들을 반환합니다. 정답 코드 def solution(players, callings..
문제 설명 제한사항 입출력 예 Solution.py 첫 번째, 두 번째 조건을 보면 철수가 가진 카드들에 적힌 모든 숫자를 나눌 수 있고 영희가 가진 카드들에 적힌 모든 숫자들 중에 하나도 나눌수 없는 양의 정수 a => 철수가 가진 카드들의 최대 공약수 영희가 가진 카드들에 적힌 모든 숫자를 나눌 수 있고 철수가 가진 카드들에 적힌 모든 숫자들 중에 하나도 나눌수 없는 양의 정수 a => 영희가 가진 카드들의 최대 공약수 로 해석할 수 있습니다. 유클리드 호제법을 사용해 철수와 영희의 카드뭉치 최대공약수를 구하기 구한 최대공약수로 두 조건들을 적용 두 최대공약수 중 가장 큰 값을 반환 정답 코드 def solution(arrayA, arrayB): answer = 0 # array의 첫 번째 값이 최대..
Solution.py 처음에는 permutations로 순열을 이용해 문제를 풀었는데 Lv2 답게 간단하게 문제가 풀릴일이 없이 효율성, 시간 초과로 실패했습니다. 이 문제를 풀기 위해서는 수학적으로 접근해야하는데, 먼저 맨 앞의 숫자가 1일 때, 1을 맨 앞의 원소로 갖는 순열은 [1, 2, 3] , [1, 3, 2] 로 총 두 가지 입니다. 이 경우의 수는 (n - 1)!을 계산했을 시 나올 수 있는 경우의 수가 됩니다. 파이썬의 math 모듈에서 factorial() 팩토리얼 메서드를 제공 해줍니다, 그 다음으로는 이 문제에서 k 번째 방법을 반환하라고 했는데, k의 수를 인덱스 값으로 변환하여 k - 1 을 해줘야합니다. k 번째에 있는 수를 구하기 위해서 (k - 1) // math.factor..
문제 설명 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 같은 방식으로 결정하려고 합니다. 해커톤 대회에 참가하는 모든 참가자들에게는 숫자들과 3가지의 연산문자(+, -, *) 만으로 이루어진 연산 수식이 전달되며, 참가자의 미션은 전달받은 수식에 포함된 연산자의 우선순위를 자유롭게 재정의하여 만들 수 있는 가장 큰 숫자를 제출하는 것입니다. 단, 연산자의 우선순위를 새로 정의할 때, 같은 순위의 연산자는 없어야 합니다. 즉, + > - > * 또는 - > * > + 등과 같이 연산자 우선순위를 정의할 수 있으나 +,* > - 또는 * > +,-처럼 2개 이상의 연산자..