파이썬

알고리즘(algo)/코페100제

파이썬 #12 (정렬 알고리즘)

# 코드 페스티벌 파이썬 100제 풀기 병합 정렬(merge sort)을 만드는 문제이다. 기존에 주어진 코드에 빈칸을 채워서 병합 정렬을 완성하면 된다. 병합 정렬에 대해 간단히 소개하자면 1. 리스트의 길이가 0 or 1이면 이미 정렬된 것으로 본다. 2. 그 외에 정렬되지 않은 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈다. 3. 각 부분 리스트를 재귀(Recursion)적으로 합병 정렬을 이용해 정렬한다. 4. 두 부분 리스트를 다시 하나의 정렬된 리스트로 합병한다. 종료 조건은 리스트의 길이가 0 또는 1이면 리스트 값을 반환하고 종료한다. 리스트의 길이를 반으로 나누어서 재귀 함수로 그룹 1과 2를 만들어준다. 나중에 병합을 할 result 리스트를 만들어준 다음에 pop 함수..

알고리즘(algo)/코페100제

파이썬 #11 (버블 정렬)

// 코드 페스티벌 100제 연습하기 bin 함수를 사용하지 않고 10진수 입력값을 받아서 2진수로 출력하는 프로그램을 만들어야 하는 문제이다. 일단 10진수를 2진수로 만들려면 나눈 몫과 나머지를 따로 저장해줘야 한다. 예를 들어 19를 2진수로 나타내 보려고 하면 19/2 = 몫 9 나머지 1이 나온다. 9를 다시 변수에 올리고 나머지 1을 리스트에 저장하는 형태로 만들어주면 된다. 그러고 나서 다시 9를 2로 나누고 몫과 나머지를 저장하는 형태로 반복해주면 된다. ex) 19/2 = 9.. 1 -> 9/2 = 4.. 1 -> 4/2 = 2.. 0 -> 2/2 = 1.. 0 => 10011 (마지막 몫부터 나머지 순으로 센다) 처음에 for문하고 if문을 섞어 쓰다가 시간 복잡도라던지 효율성면에서 떨..

알고리즘(algo)/코페100제

파이썬 #10

벌써 10번째 글이다. 학생들의 점수를 공백으로 구분해서 입력받고, 1~3위 학생의 수를 세어 주기로 한 사탕의 개수를 출력하는 것인데 1~3위 학생은 여러 명일 수 있고 1~3위 학생 중 중복되는 학생까지 포함해야 한다. 해답을 보고 난 뒤 무언가 이상함을 느꼈다. 해답에서는 미리 1~3위가 정해져 있으니까 사탕의 개수(count) 값을 3으로 주고, 정렬한 data_sorted 리스트에서 1~3위 학생 중 점수가 중복되는 사람을 세려고 한다. 하지만, 나는 이게 틀렸다고 생각이 들었다. 왜냐하면 만약에 1등이 4명 이상이라고 했을 때, data_sorted[-3] 값이 1등 점수가 나오고 1등의 중복되는 수만 세기 때문이다. 해답 코드로 예를 들어서 출력을 해보면, 98이 1등인데 그걸 기준으로 해서..

알고리즘(algo)/코페100제

파이썬 #9

이어서 조금의 문제 풀이를 더 하고 오늘 글을 마치려고 한다. 구구단 문제는 중첩 함수가 대부분인데, 문제 자체가 반복문 한 줄만 작성하면 돼서 해답과 같은 내 코드 해설은 Pass 하겠다. 학생들이 뽑은 후보들을 입력받으면 뽑힌 학생의 이름과 받은 표 수를 출력하는 문제이다. 해답과는 비슷한 코드이다. 해설을 조금 하면 입력을 예시로 '원영 원영 은비 은비 은비 은비 채연 채연 채연'으로 입력값을 받았다면 count로 셌을 때 원영 = 2, 은비 = 4, 채연 = 3이 된다. 이때, 반복문을 사용해서 0부터 리스트 길이 = 9까지 반복할 때 먼저 name[n-1]인 채연 < 원영부터 계산을 실행한다. 3 < 2로 맞지 않으니까 다시 for문으로 올라가서 원영 < 은비, 2 < 4로 일치하게 된다. 일치..

알고리즘(algo)/코페100제

파이썬 #8

코드 페스티벌의 파이썬 코드 100제 문제를 여지없이 풀고 있는 하루이다. 행성의 한글 이름을 입력하면 행성에 해당하는 영어 이름을 반환하는 프로그램을 작성하는 문제인데, 행성의 한글과 영어 이름을 딕셔너리로 작성해서 키값을 반환하도록 만들었다. 해답과 비슷하지만 다른 점은 키값을 출력하는 형태가 변수[입력값]으로 키 값을 출력하는 방식에서 벗어나서 나는 get 함수를 통해서 입력값의 키 값을 출력하는 형태로 작성했다. 첫 줄에는 학생의 이름이 공백으로 구분되어 입력, 두 번째 줄에는 수학 점수가 공백으로 구분되어 입력 시에 두 개를 합쳐 학생의 이름이 key이고 value가 수학 점수인 딕셔너리를 출력하는 문제이다. 나는 입출력 값의 예제만 출력하게 작성했는데, 해답에서는 몇 개의 값을 입력하든 리스트..

알고리즘(algo)/코페100제

파이썬#7

오랜만에 블로그에 들어왔다. 한동안 여러 가지 일들 때문에 글을 작성하지 못했었는데, 공부는 꾸준히 하고 있었다. 그중에서도 파이썬 문제들이 여럿 있는 코드 페스티벌 파이썬 100제 문제를 내가 풀었던 답안들로 글을 작성해보려 한다. 우리 태양계를 이루고 있는 행성은 수금 지화 목토 천해로 8개의 행성이 있다. 그 행성들 중 n번째 행성이 무엇인지 알고 싶은 문제이고, 수성이 첫 번째 행성으로 나와야 하는 문제이다. 코드를 작성하면서도 딕셔너리가 아닌 리스트로 할 수 있는 방법이 있을 텐데, 무작정 써 내려간 뒤 해답을 본 나의 현타는,, 해답에서는 리스트로 출력하는 코드였고 나는 딕셔너리로 출력하는 코드를 작성해보았다. 조금 더 간단하게 리스트로 출력하는 방법을 사고해서 다음에는 코드의 길이를 줄여보아..

dDong2
'파이썬' 태그의 글 목록 (19 Page)