가장 간단한 방법인 for문을 사용해 풀었다.풀면서도 이건... 시간복잡도가 높을거라고 생각했다.zip() 함수를 사용할까 했는데, 어떻게 써야 문제를 풀 수 있는지를 모르겠더라.....코드는 보여주면 안될것 같아서 말로 설명..역시나 잘한 풀이는 zip() 을 사용한
최대공약수, 최소공배수를 구하는 수식이 있는건 알지만, 그 수식이 생각나지 않았다.최대공약수와 최소공배수 간 관계를 떠올리면서 코드를 간단하게 짜려고 노력했다.최대공약수가 더 쉬워서 먼저 구하고, 이를 사용해 최대공배수를 구하면 되겠다고 생각했다.여러가지 예제를 떠올려
이렇게 깔끔하게 하고싶었는데이건 오류가 발생했다.아마ㅏ print() 안에 리스트 컴프리핸션을 사용하면 안되는가보다.이러면 될거라고 생각했는데....출력 무슨일..?왜 "\\n" 가 그대로 문자로 출력이 되는 것인가......결국 사용하고 싶지 않았던 for문 사용했다
이 코드로 모든 예제는 풀었지만, 효율성 검증에서 싸그리 탈락했다.효율성 문제라 혼자서는 어디가 문제인지 모르겠어서 gpt의 도움을 받아봤다.나는 pop()을 사용한게 신의 한수였다고 생각했는데오히려 이게 시간복잡도를 높이는 결과가 되었다....gpt가 2가지 해결방법
12진법, 8진법과 달리 3진법은 내장된 함수가 없어서 직접 나눗셈을 해서 3진법 수로 만들어야 했다.3진법을 뒤집는 것은 reverse()로 간단하게 할 수 있었다.3진법을 다시 10진법 수로 만드는것은 우리가 계산하는 방법을 생각하면 간단하게 코드로 만들 수 있었다
처음에는 for문을 풀어서 작성했다가 풀이가 성공하는 것을 보고 리스트 컴프리핸션을 사용해 간략하게 작성했다.나는 내가 한줄로 성공해서 뿌듯했는데...이렇게 시간복잡도가 더 낮은 방법이 있었다.map()이 함수와 list를 연결해준다는 걸 잊지 말자.그러면 반복문을 사
최대한 복잡하지 않게 풀고 싶었는데 반복문을 사용하지 않고는 안될것 같았다.리스트의 중복 제거는 set()을 사용하면 간단히 할 수 있다.가장 많은 사람이 작성한 풀이도 나랑 비슷하게 풀었다.다만 나는 s라는 변수를 하나 더 선언했다....!변수는 최대한 줄여보자!역시
이거 하나 푸는게 너무 어려웠다.처음 a = list(map(lambda x: x//2, food))를 적었을때는 쉽게 풀릴것같았는데.....어떻게 해야 앞뒤로 숫자를 붙일지 고민을 많이 했다.(1) 앞 숫자를 먼저 만들고 + 0을 붙이고 + 앞 숫자를 뒤집어서 뒤에
예제를 손으로 풀어보면 다음과 같다(0) 20개(1) 20 - 20 + 10 = 10(2) 10 - 10 + 5 = 5(3) 5 - 4 + 2 = 3(4) 3 - 2 + 1 = 2(5) 2 - 2 + 1 = 1잘 들여다보면 각 식에서 다음과 같은 일정한 패턴을 찾을 수
(1) 주어진 글자를 맨 앞에서 하나씩 다 사용한다. ==> enumerate() 사용(2) 해당 글자의 앞에, 그것과 동일한 글자가 없다면 -1을 저장한다. ==> else 문에 해당.(3) 해당 글자의 앞에, 그것과 동일한 글자가 있다면 몇 칸 앞에 있는지 저장한다
(1) 사진에 있는 인물이 name에 있는지 확인한다.(2) name에 있다면 그 이름에 맞는 점수를 최종 점수에 합산한다.그리고 이 2개의 조건을 map()을 사용하여 간결하게 표현했다.인물이 name에 있다면 인덱스 값을, 없다면 -1을 반환인덱스값이 -1이 아니라