문제4. 완벽한 햄버거 만들기 구름LEVEL 난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다. level.goorm.io 문제해결방법 슬슬 문제에 까다로운 조건이 나오기 시작해서 생각이 더 많이 필요해지고 있다 문제 난이도도 ★★로 올랐다. 그래도 아직까지는 크게 어렵지 않다. 배열이 증가했다가 감소하는 형태인지를 체크하는 방법을 떠올릴 수 있으면 된다. 여러 방법이 있겠지만, 내가 생각한 방법은 최댓값을 찾고, 최댓값을 기준으로 양쪽으로 감소하는 형태인지를 체크하는 방법이다. 우선 arr.index(max(arr))을 이용해 최댓값의 위치를 찾고, 다음과 같은 두 가지의 단계로 나누어서 체크한다. 최댓값에서부터 배열의 첫 번째 요소까지 이동하면서 값이 더 커지는 구간이 있는지를 확..
전체 글

아래 링크된 글을 먼저 읽고 immutable 객체와 mutable 객체의 개념에 대해 이해하는 것을 추천한다. https://youngandmini.tistory.com/7 [Python] 파이썬 변수가 객체를 참조하는 방식 (immutable 객체와 mutable 객체) 파이썬에서는 immutable 객체인지 mutable 객체인지에 따라 참조하는 방식이 다르다. immutable 객체: 한 번 생성되면 값을 변경할 수 없는 객체. int, float, str 같은 자료형의 객체는 한 번 객체가 생성되 youngandmini.tistory.com 깊은 복사(deep copy) vs 얕은 복사(shallow copy) 파이썬의 슬라이싱(list[:])이 깊은 복사인지 얕은 복사인지를 알아보기 전에, 먼..
문제 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) 챌린지에 대한 기대와 각오 앞으로의 ..

파이썬에서는 immutable 객체인지 mutable 객체인지에 따라 참조하는 방식이 다르다. immutable 객체: 한 번 생성되면 값을 변경할 수 없는 객체. int, float, str 같은 자료형의 객체는 한 번 객체가 생성되면 그 객체의 값을 바꿀 수 없다. mutable 객체: 값을 변경할 수 있는 객체. list, set, dictionary 같은 자료형의 객체는 생성된 이후에 그 객체의 값을 바꿀 수 있다. 지금부터 immutable 객체와 mutable 객체를 참조하는 방식에 대해 알아보도록 하자. 파이썬의 변수 (C언어와의 차이점) 우선 파이썬의 변수가 값을 저장하는 것이 아닌 값을 참조한다는 사실을 알아야 한다. 이해를 돕기 위해 C언어와 파이썬을 예시로 들어 이해해 보자. 먼저 C..
https://www.acmicpc.net/problem/16472 16472번: 고냥이 고양이는 너무 귀엽다. 사람들은 고양이를 너무 귀여워했고, 결국 고양이와 더욱 가까워지고 싶어 고양이와의 소통을 위한 고양이 말 번역기를 발명하기로 했다. 이 번역기는 사람의 언어를 고 www.acmicpc.net 먼저 생각할 수 있는 방법은 완전탐색이다. 모든 글자를 시작점으로 하여 다음 글자들을 한 글자씩 포함시키고, 인식할 수 있는 알파벳의 종류를 초과할 때까지 포함을 진행한다. 인식할 수 있는 알파벳의 종류를 초과한 순간에 저장된 문자열의 길이가 인식할 수 있는 문자열의 길이이므로, 이 길이들의 최댓값을 구하면 간단하게 답을 구할 수 있다. 위 내용을 코드로 구현하면 아래와 같다. #시간초과 n = int(i..
https://www.acmicpc.net/problem/22988 22988번: 재활용 캠페인 첫 번째 용기와 두 번째 용기를 가져가서 용량이 $\left(0+1+\frac{13}{2}\right)$㎖ $=$ $7.5$㎖ 남은 용기를, 세 번째 용기와 네 번째 용기를 가져가서 용량이 $\left(2+3+\frac{13}{2}\right)$㎖ $=$ $11.5$㎖ 남은 용 www.acmicpc.net 이 문제에서 사용된 알고리즘은 투포인터인데, 말 그대로 포인터를 두 개를 사용하여 문제를 해결하는 것이다. 핵심은 포인터 두 개를 적절하게 활용하여, 정답이 될 수 있는 범위를 좁혀 나아가는 것이다. 투포인터를 예를 들어 설명하자면 다음과 같다. [투포인터 이해를 위한 예시] 다음과 같은 정렬된 배열에서 두..