<문제 1번>
<1. 나의 풀이>
이 문제는 주어진 문자열이 숫자로 구성되어 있는지를 확인해주는 isdigit() 함수를 사용하면 간단하게 풀 수 있다.
<2. 내 풀이보다 더 효율적인 풀이>
위처럼 len(s) in (4, 6) 이런 식으로 코드를 구현해주면, 나처럼 if 문을 2번 쓰지 않고도 코드를 작성할 수 있다.
<문제 2번>
<1. 나의 풀이>
나는 이 문제를 "선택 정렬" 알고리즘을 사용해서 풀어보았다.
먼저 최댓값의 index 값을 찾아주는 find_max_idx() 함수를 만들고, 만들어진 find_max_idx() 함수를 사용해서 최댓값을 차례대로 뽑아내주는 방법으로 구현했다.
** 아래의 링크는 "선택 정렬" 알고리즘에 대한 설명과 코드를 적어놓은 사이트이다. 참고하자!!
<출처: 모두의 알고리즘 with 파이썬>
https://thebook.io/006935/partxt/xa/08/
<2. 내 풀이보다 더 효율적인 풀이>
물론 나처럼 "선택 정렬" 알고리즘을 사용하지 않고도, 위와 같이 훨씬 더 간단하게 문제를 풀 수도 있다.
sorted를 사용해서 문제를 풀면 정말 간단하게 풀리지만, 이렇게 푸는게 과연 알고리즘 공부에 도움이 될까...? 하는 의문이 든다.. (누가 누굴 가르치는건지...내 공부나 똑바로 하자...)
<문제 3번>
<1. 나의 풀이>
이 문제도 pop() 함수를 사용해서 리스트의 맨 마지막 요소 값들을 추출하면 쉽게 풀 수 있다.
단, 주어진 n 이 int 형이므로 list(str(n)) 를 통해 문자열로 변경된 n 을 다시 리스트로 변환해주어야 한다!!
<2. 내 풀이보다 더 효율적인 풀이>
위와 같이 reversed() 함수를 사용하면 정말 정말 간단하게 풀 수가 있네..? ㅋㅋㅋㅋㅋ
잘 기억해두자... reveresed() 함수!!
<문제 4번>
<1. 나의 풀이> = <2. 내 풀이보다 더 효율적인 풀이>
이 문제는 슬라이싱을 통해 간단하게 풀 수 있다.
뒤에서 4자리 수만 남기고, 나머지 숫자들은 "*" 처리해주는 식으로 풀어보았다.
이게 가장 효율적인 방법인 듯 싶다.
<문제 5번>
<1. 나의 풀이>
이 문제...푸는데 좀 많이 오래 걸렸다 ㅎㅎㅎㅎ 오래걸릴 문제가 아니었는데 ㅜㅜ...멍청한 나란 놈...
for 문을 2번 쓰다보니, i 값을 설정하는데 있어서 좀 헷갈렸다.
그래도 일단 풀긴 했으니...조금 더 간단하게 풀 수 있는 방법이 없나 싶어 다른 사람들의 코드를 확인해보았다.
<2. 내 풀이보다 더 효율적인 풀이>
역시....list(map(lambda x: ~~~)) 를 사용하면 한줄로 뽝!! 끝낼 수가 있었다.
알고리즘 문제들을 풀면서 이러한 풀이 방식은 정말 많이 보았다.. 자주 사용되는 만큼 잘 기억해두어야 할 것 같다!!
'Python' 카테고리의 다른 글
[Pandas 기초] (0) | 2020.05.21 |
---|---|
[알고리즘_Programmers] 5주차 문제 및 풀이 (총 5 문제) (1) | 2020.05.20 |
[알고리즘_Programmers] 3주차 문제 및 풀이 (총 5 문제) (1) | 2020.05.20 |
[알고리즘_Programmers] 2주차 문제 및 풀이 (총 5 문제) (2) | 2020.05.20 |
[알고리즘_Programmers] 1주차 문제 및 풀이 (총 5 문제) (2) | 2020.05.20 |