본문 바로가기

전체 글165

[백준/Python] 25206번 너의 평점은 문제 ■ 25206번 너의 평점은 문제 ■ 코드 풀이 풀이 자체는 단순한 편입니다. 과목명은 필요 없는 값이니 무시하고, 학점과 등급만을 활용하여 계산하면 됩니다. 그런데 이 문제에서 이해가 안 되는 부분이 하나 있습니다. 아래 코드를 보시면 알겠지만, 저는 이 문제에 처음 접근할 때 list를 활용했습니다. 학점과 등급을 곱한 값을 list에 append 하고 최종 출력 시, 학점의 합과 나누는 방식이었습니다. 저는 정답이라고 생각했는데, 아무리 제출해도 계속 오답 판정을 받았습니다. 혹시나 하는 마음에 list를 사용하지 않고 다시 코드를 작성하여 제출했더니 정답으로 처리되더군요. 두 방식의 차이가 뭘까, 계속 생각해 봤는데 개인적으로는 summation 과정에서 미세한 소수점 차이가 원인이 아닌가 싶네요.. 2023. 3. 31.
[백준/Python] 1316번 그룹 단어 체커 문제 ■ 1316번 그룹 단어 체커 문제 ■ 코드 풀이 두 가지 풀이법을 공유드리겠습니다. 하나는 제가 풀었던 방식이고, 다른 하나는 조금 더 개선된 방식입니다. 소요 시간은 동일하지만, 코드 길이에서 차이가 있어서 실전에서는 개선 방식대로 푸는 것이 좋아 보입니다. 그러나 파이썬을 막 배우기 시작하신 분이시라면 스터디를 위해서 두 코드 모두 보시는 것을 추천드립니다. 먼저 첫 번째 코드입니다. 아이디어는 다음과 같습니다. 1) 입력받은 단어를 word라는 변수로 선언한다. 그리고 word를 list화한 word_list도 선언한다. 2) word에서 알파벳을 한 글자씩 꺼낸다. 꺼낸 알파벳을 활용하여 word_list에 해당 알파벳이 몇 번째 있는지 index를 구한다. index는 char_idx_list.. 2023. 3. 30.
[백준/Python] 2941번 크로아티아 알파벳 문제 ■ 2941번 크로아티아 알파벳 문제 ■ 코드 풀이 저는 복잡하게 문제를 접근했는데, 파이썬 고수분들은 replace 메서드를 활용하여 굉장히 쉽게 푸시더군요. 파이썬 문법에 대해 아직 배워야 할 것들이 많이 남은 것 같습니다. 여기서 핵심은 croatia_alphabets라는 list에서 하나씩 꺼내는데, 'dz=' 보다 'z='가 앞에 있으면 'dz='가 아니라 'z='로 바꿔서 오류가 나오므로 아래의 순서를 지키는 것이 중요합니다. replace 메서드 관련한 내용은 아래 잘 정리된 링크 첨부하니, 모르셨던 분들이라면 스터디 차원에서 들어가 보시는 것이 좋을 듯합니다. croatia_alphabets = ['c=','c-','dz=','d-','lj','nj','s=','z='] words = in.. 2023. 3. 29.
[백준/Python] 4344번 평균은 넘겠지 문제 ■ 4344번 평균은 넘겠지 문제 ■ 코드 풀이 제가 생각했을 때, 이 문제의 핵심은 list 자료형의 element-wise 대소 관계 비교와 출력 형식을 지정한 print인 것 같습니다. 저 같은 경우에는 students라는 list에 학생의 수와 점수를 모두 받은 다음에 가장 첫 번째 index인 학생의 수를 pop 메서드를 활용해 리스트에서 추출했습니다. 그리고 이를 활용해 mean을 구했습니다. 리스트 내 개별 원소의 대소 관계 비교는 map과 lambda 함수를 활용했는데요. for 문을 이용하여 풀어도 되지만, 코드가 지저분해져서 저는 보통 이런 경우에 lambda 함수를 즐겨 사용합니다. 소수점 넷째 자리에서 반올림하여 출력하기 위한 형식은 아래 코드를 참고해 주세요. import sys .. 2023. 3. 28.
[백준/Python] 1157번 단어 공부 문제 ■ 1157번 단어 공부 문제 ■ 코드 풀이 저는 이 문제를 dict 자료형을 사용해서 어렵고 지저분하게 풀었는데요. 찾다 보니, 조금 더 깔끔한 코드가 있어서 스터디 차원에서 그 코드를 가져왔습니다. 제가 생각했을 때 이 코드에서의 핵심은 set과 count 메서드를 활용하는 것 같습니다. words = input().upper() unique_words = list(set(words)) words_counts = list() for unique_word in unique_words: word_count = words.count(unique_word) words_counts.append(word_count) if words_counts.count((max(words_counts))) > 1: print.. 2023. 3. 27.
[백준/Python] 10988번 팰린드롬인지 확인하기 문제 ■ 10988번 팰린드롬인지 확인하기 ■ 코드 풀이 문자열은 list처럼 slicing이 가능하다는 점을 알고 있다면, 쉽게 풀 수 있는 문제입니다. 두 가지 방법으로 풀어보겠습니다. 먼저 아래의 코드는 word를 입력받고, word의 reverse를 word_reverse 변수에 할당합니다. 그리고 for loop를 순서대로 돌면서 word와 word_reverse를 element-wise 별로 비교합니다. 각 위치 별로 단어가 같다면, True가 되고 이는 곧 숫자 1과 같으므로 문자가 모두 같다면 sum은 문자열의 길이와 동일해집니다. 이때, 단어의 역순을 구하는 방법에도 두 가지가 있습니다. 첫 번째는 word[-1::-1], 마지막 문자부터 첫 번째 문자까지 역순으로 배열하는 방법이고 두 번째는.. 2023. 3. 26.