-
리스트에 1~10까지 원소를 넣어둔 다음 입력받은 바구니 순서에 맞추어서 슬라이싱 해준다. i, j, k가 입력되면 ~i, j~k까지, i~k까지, j~에 맞추어서 슬라이싱 해준다.최종 슬라이싱 된 리스트를 출력시켜 준다.
입력받은대로 출력하는 문제. 다만 프로그램을 종료하는 방법이 적혀있지않다. try: (예외 발생가능한 코드) except (어떠한 예외): (어떠한 예외가 발생했을 때 실행되는 코드) EOFError : End Of File 에러, 더 이상 값을 읽을 수 없을 때 발생한다. ** 시스템 입력을 사용하면 안된다.
리스트의 특정 구간을 반복해서 뒤집는 문제 뒤집는 방법이 리스트[::-1]이라는 것만 알면 된다.
스택을 함수로 구현해도 되지만 가볍게 조건문으로 구현했다. 스택은 위로쌓고 위에서빼는 자료형이다.
for문을 돌면서 주유소 가격은 지금까지의 주유소 가격보다 작을 때 갱신된다.
처음에는 이걸 어떻게 해야하나 고민을 많이했지만 생각보다 간단했다. -을 기준으로 모두 더하면서 빼주면 됐다. split('-')을 이용하면 매우 쉽게 나눌 수 있었다. 이 기능이 없는 다른 언어는 어떤 방식으로 풀까 궁금해졌다.
생각보다 쉬운 문제였다. 예를 들어 5 0 10 3 3 2 3 4 9 9 10 이 들어왔다 치자. 그러면 시작시간으로 오름차순 정렬을 해주고 그거에 다시 끝나는 시간으로 오름차순 정렬을 해준다. (끝나는 시간이 더 중요하기 때문이다.) 2 3 3 3 4 9 0 10 9 10 이 된다. 이제 이 자료를 순서대로 서로 겹치지 않도록 세주면 된다. 2 3 3 3 4 9 9 10 으로 4가 정답이 된다.
그리디 알고리즘은 미래를 생각하지 않고 각 단계에서 가장 최선의 선택을 하는 기법이다. 1번 코드 (시간 초과) 뺄셈으로 반복문을 돌렸더니 시간 초과 판정이 나왔다. 2번 코드 (정답) 나눗셈으로 반복을 돌렸더니 정답이었다.