# 코딩 페스티벌 파이썬 100제 문자열을 입력받고 연속되는 문자열을 압축해서 표현하는 문제이다. ex) aaabbbbcdddd를 입력하면 a3b4c1d4가 출력되는 형태이다. 해답을 조금 베껴왔다. 내가 작성한 코드는 비슷하지만 일부분의 출력 값에서 이상하게 나와서 정확한 해답을 가져왔다. 잠깐 설명을 해보자면 입력받은 문자열을 빈 스트링에 저장하는 하나씩 저장하는 형태이다. 1) a가 3개 있으면 count 값은 1씩 증가해서 3이되고, a != b이기 때문에 new_string에 a + 3 값을 저장시켜준다. 2) 다음 b부터 시작하도록 x = i로 만들어주고 count 값은 1로 초기화시켜준다. 3) 마지막에 d값은 for문 밖에서 써줘야 출력이 가능하므로 작성해준다. 조건을 충족해서 201909..
# 코딩 페스티벌 파이썬 100제 총 문자열의 길이는 50으로 제한하고 문자열을 입력받으면, 가운데 정렬 후 빈 공간은 =으로 채우는 문제이다. format 함수로 간단하게 정렬할 수 있다. 0번째 변수를 받아서 빈 공간을 =으로 채우고 ^ 가운데 정렬을 한 뒤 50개의 공간을 할당해준다는 의미이다. 출력 값은 다음과 같다. 주어진 데이터에서 이름을 가나다 순서대로 배정하고 번호를 매기는 문제이다. 번호는 1번부터 매겨야 하므로 i+1 값을 주면 되고, 정렬된 0번째 친구부터 출력한다. 출력 값은 다음과 같다. 토, 일에 알바 갔다 와서 70번까지 풀고 또 블로그를 작성해야겠다. 오늘도 모두 수고하셨습니다 : )
# 코딩 페스티벌 파이썬 100제 예제 딕셔너리가 주어졌을 때 한국의 면적과 가장 비슷한 국가와 그 차이를 출력하는 문제이다. 1. 한국의 value값을 korea에 저장해준 다음에 pop함수로 딕셔너리에서 한국을 삭제한다. 2. 모든 key값과 value값을 각각의 리스트로 만들어준다. 3. max값에 width의 max값을 담아주고, 리스트에 같은 인덱스에 저장될 수인 same을 만들어준다. 4. width[0]값부터 차례로 korea를 뺀 값의 절댓값이 작으면 max값을 새롭게 저장한다. 5. 절댓값의 크기가 가장 적은 값의 인덱스 번호를 same에 저장한다. 6. 마지막 print문으로 같은 인덱스 번호를 가진 나라를 출력하고 제일 작은 절댓값이 저장된 max를 출력한다. 어쩌면 틀렸다고 생각이 ..
# 코딩 페스티벌 파이썬 100제 괄호 문자열 중 괄호의 모양이 바르게 구성된 문자열을 바른 문자열로, 그게 아니라면 바르지 않은 문자열로 판별해서 YES, NO를 출력하는 문제이다. ex) (()) = 바른 문자열, ()()) 와 같은 문자열은 바르지 않은 문자열. 소괄호만을 가지고 만들어 본 코드이다. ex에 나온 예제들만 통과시키려면 이렇게 작성해 볼 수도 있다. if x.count("(") != x.count(")"): return False else: retrun True 이렇게 작성하면 괄호 문자열의 개수를 판단해서 ()())와 같은 값이 나오면 NO를 반환할 수 있다. 하지만, )))(((와 같은 바르지 않은 문자열은 개수가 같아서 YES를 반환하기 때문에 올바른 결과를 얻어낼 수 없다. 그..
# 코드 페스티벌 파이썬 100제 풀기 병합 정렬(merge sort)을 만드는 문제이다. 기존에 주어진 코드에 빈칸을 채워서 병합 정렬을 완성하면 된다. 병합 정렬에 대해 간단히 소개하자면 1. 리스트의 길이가 0 or 1이면 이미 정렬된 것으로 본다. 2. 그 외에 정렬되지 않은 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈다. 3. 각 부분 리스트를 재귀(Recursion)적으로 합병 정렬을 이용해 정렬한다. 4. 두 부분 리스트를 다시 하나의 정렬된 리스트로 합병한다. 종료 조건은 리스트의 길이가 0 또는 1이면 리스트 값을 반환하고 종료한다. 리스트의 길이를 반으로 나누어서 재귀 함수로 그룹 1과 2를 만들어준다. 나중에 병합을 할 result 리스트를 만들어준 다음에 pop 함수..
// 코드 페스티벌 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문을 섞어 쓰다가 시간 복잡도라던지 효율성면에서 떨..