본문 바로가기

Algorithm272

[ 파이썬(python) ] 백준 1157 - 단어 공부 📍 백준 1157 - 단어 공부 백준 1157 - 단어 공부 💡 나의 풀이 언젠가 이 문제를 보고 풀 엄두가 나지 않아서 북마크로 추가만 했었는데, 오늘 다시보니까 풀 수 있었다. 약간 까다로운 문제인데 count, index 함수를 사용하면 금방 풀 수 있었다. 먼저 for문을 풀어서 작성하고 이후에 list_comprehension으로 코드를 단축시켰다. 이해하기 쉽도록 예제 입력에 나와있는 Mississipi를 기준으로 알아보자. 입력을 대문자 or 소문자로 통일 시킨다. (이후에 set으로 변환하기 위함.) 입력을 set으로 형 변환을 시켜 중복을 제거한다. set형으로 for문을 돌려 입력에 i값이 몇 번 쓰였는지 확인하고 빈 리스트에 append시킨다. count_list = [1, 4, 1,.. 2021. 5. 13.
[ 파이썬(python) ] 백준 2231 - 분해합 📍 백준 2231 - 분해합 백준 2231 - 분해합 ⚡️ 나의 풀이 언젠가 백준 단계별 문제풀이에서 이 문제를 봤었는데 그때는 이해가 안 돼서 그냥 넘겨버렸다. 이번엔 집중해서 문제를 잡았더니 풀 수 있었는데 시간 단축하는 방법은 끝내 찾지 못했다. 보통 브루트 포스의 문제의 범위는 1,000,000으로 주어지는 경우가 많다. 코딩테스트 볼 때 범위가 1,000,000이라면 브루트포스를 의심해보자! 총 3번에 걸쳐서 풀었고, 첫 번째는 시간 초과 (코드를 다시보니까 생성자가 없는 조건을 고려하지 않고 설계해서 시간초과가 났다. (21. 5. 13.)), 두번째는 정답판정이 났지만 실행시간이 많이 나왔다. 세 번째는 다른 사람의 코드 중 시간 최적화기능만 가져왔다. 입력을 받는다. target의 분해합을.. 2021. 5. 12.
[ 파이썬(python) ] 백준 3460 - 이진수 📍 백준 3460 - 이진수 백준 3460 - 이진수 ⚡️ 나의 풀이 1의 위치를 찾으면 되는 문제이고 입력을 bin 함수로 변환했는데 중요한 점은, bin함수를 사용하게 되면 ob1010처럼 문자열로 출력한다. 따라서, 조건문을 사용할 때 1 대신 '1'을 사용하도록 하자. 그리고 다른 사람의 코드를 보다가 리스트를 거꾸로 사용해야 하는 경우 range(n-1, -1, -1) 대신 출력부분에 [-i-1]를 사용했다. 일부로 뒤집을 필요 없이 단순하게 출력만 바꾸면 되는 코드였다. 기록해두고 써먹어야겠다. bin 함수를 이용하여 10진수 형태의 입력을 2진수 형태로 변경한다. bin함수로 변환하게되면 ob1010과 같은 값이 나오는데 숫자만 사용하기 위해 슬라이싱으로 [2:] 잘라준다. 최하위 비트(le.. 2021. 5. 12.
[ 파이썬(python) ] 백준 5598 - 카이사르 암호 📍 백준 5598 - 카이사르 암호 백준 5598 - 카이사르 암호 ⚡️ 나의 풀이 내가 풀었던 하드코딩 방식보다는 다른 사람이 푼 방식이 조금 더 괜찮아 보였다. key에 1부터 26까지 value에 알파벳을 dict에 선언한다. 알파벳 문자를 3개씩 건너뛰는데 다른 문자는 상관없지만 A, B, C는 index_error가 발생한다. 따라서, 입력에 A, B, C가 포함되어있으면 X, Y, Z와 매칭되게한다. # 내가 작성한 코드 s = input() x = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' alphabet = {} for i in range(1, 27): alphabet[i] = x[i-1] temp = '' for i in s: if i == 'A' or i == 'B' or i .. 2021. 5. 11.
[ 파이썬(python) ] 백준 2948 - 2009년 📍 백준 2948 - 2009년 백준 2948 - 2009년 ⚡️ 나의 풀이 저번에 풀었던 2007년과 동일한 유형이다. 다만, 문제에 윤년이라고 주어져있지 않기때문에 2월은 28일로 생각하고 풀면 된다. months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] days = ["Wednesday", "Thursday", "Friday", "Saturday", "Sunday", "Monday", "Tuesday"] D, M = map(int, input().split()) print(days[(sum(months[:M-1]) + D) % 7]) 2021. 5. 11.