문제18. 중첩 점 구름LEVEL 난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다. level.goorm.io 문제 해결 방법 문제의 구현 난이도 자체는 높지 않지만, 무엇을 구현해야 할지에 대한 아이디어를 생각해내는데 조금 시간이 걸리는 문제였다. 우선, 해결책을 비교적 간단하게 떠올릴 수 있도록 단계별로 아이디어를 떠올려보았다. 두 직선이 한 칸에서 중첩이 되려면? 상하 방향으로 뻗은 직선과 좌우로 뻗은 직선이 만나면 중첩이 된다. 상하 방향 직선끼리, 혹은 좌우 방향 직선끼리 만나서는 중첩이 될 수 없다. 해당 칸을 지나가는 직선들의 수를 알고 있을 때, 해당 칸의 중첩 점의 개수를 알 수 있나? 상하 방향의 직선의 개수와 좌우 방향의 직선의 개수를 곱한 값이 해당 칸의 중첩 ..
구현
문제5. 이진수 정렬 구름LEVEL 난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다. level.goorm.io 문제 해결 방법 2진수로 나타냈을 때의 1의 개수가 많은 순으로 정렬하되, 1의 개수가 같다면 10진수를 기준으로 더 큰 값이 먼저 배치될 수 있도록 하는 문제이다. 내가 생각한 방법은 총 3개의 배열(리스트)을 필요로 한다. 10진수를 담을 리스트 - 리스트1 2진수로 변환된 문자열을 담을 리스트 - 리스트2 각 2진수에 포함된 1의 개수를 담을 리스트 - 리스트3 위 3개의 리스트를 가지고 다음과 같은 순서로 문제를 해결한다. 리스트1을 내림차순 정렬한다. (나중에 1의 개수가 같을 때, 큰 것이 먼저 배치될 수 있도록 하기 위함) 리스트1의 순서와 동일한 순서로 리스..
문제4. 완벽한 햄버거 만들기 구름LEVEL 난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다. level.goorm.io 문제해결방법 슬슬 문제에 까다로운 조건이 나오기 시작해서 생각이 더 많이 필요해지고 있다 문제 난이도도 ★★로 올랐다. 그래도 아직까지는 크게 어렵지 않다. 배열이 증가했다가 감소하는 형태인지를 체크하는 방법을 떠올릴 수 있으면 된다. 여러 방법이 있겠지만, 내가 생각한 방법은 최댓값을 찾고, 최댓값을 기준으로 양쪽으로 감소하는 형태인지를 체크하는 방법이다. 우선 arr.index(max(arr))을 이용해 최댓값의 위치를 찾고, 다음과 같은 두 가지의 단계로 나누어서 체크한다. 최댓값에서부터 배열의 첫 번째 요소까지 이동하면서 값이 더 커지는 구간이 있는지를 확..
문제 3. 합 계산기 구름LEVEL 난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다. level.goorm.io 문제해결방법 오늘 챌린지 문제도 크게 어려울 것은 없다. 리스트에 계산할 식을 입력받으면 [ "1", "+", "3"]과 같이 문자열을 담은 리스트가 될 것이다. 이 리스트의 요소 중, 첫 번째(0번 인덱스) 요소와 세 번째(2번 인덱스) 요소가 피연산자이므로 int 타입으로 형변환 되어야하고, 두 번째(1번 인덱스) 요소는 연산자로서 어떤 연산을 수행할지를 결정할 조건의 역할을 한다. t 번의 반복을 거쳐 각 연산의 결과를 sum에 더해주고 sum을 출력하면 간단하게 문제가 해결된다. import sys t = int(sys.stdin.readline()) sum = 0..
문제 2. 프로젝트 매니징 구름LEVEL 난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다. level.goorm.io 문제해결방법 우선 문제를 간단하게 분석하며 주의할 점을 체크하면 아래와 같다. N: 입력받을 Ci의 개수 T(시): 0 ~ 23 시 (12시간 단위가 아닌 24시간 단위를 사용) M(분): 0 ~ 59 분 Ci(소요된 시간): 소요된 시간을 분 단위로 표현 24 시간 단위라는 것만 체크한다면, 어려운 부분은 딱히 없다. 기능을 전부 개발한 최종 시각 만을 구하면 되고, 중간 과정에서의 시각은 관심이 없으므로, 입력 받은 현재 분(m)을 유지할 필요가 없다. 그러므로 현재 분(m)에 n번만큼 입력받는 Ci(소요된 시간)를 전부 더해줘도 괜찮다. 이때, m(분)은 59 ..
문제 1. 운동 중독 플레이어 구름LEVEL 난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다. level.goorm.io 문제 해결 방법 간단한 구현 문제이다. 문제에 1RM을 구하는 식이 W와 R에 관한 식으로 주어져 있고, 입력값으로 W와 R을 입력받는다. 따라서 주어진 식을 파이썬의 연산자들을 이용해 표현해주면 된다. 다만, 출력값에서 소수점 이하의 값은 버린다는 조건이 있다. 파이썬에서는 실수를 int로 변환해주기만 하면, 간단하게 소수점 이하의 값을 버린 결과를 얻을 수 있다. 위 내용을 파이썬 코드로 변환하면 아래와 같다. w, r = map(int, input().split()) rm = int(w*(1+r/30)) print(rm) 챌린지에 대한 기대와 각오 앞으로의 ..