본문 바로가기

PS6

[백준] 브론즈2 - 2675 문자열 반복 - 현타 (파이썬) 살짝 현타가 온다. 내 코드는 정말 길고 더럽고, 알아보기 힘들다. 반면에 다른사람들의 코드는 굉장히 짧고, 간단하다. 짧고 깔끔한것이 전부는 아닐지 모르지만, 일단 내코드보단 훨씬 좋아보인다. ㅋㅋ readline()을 사용한것부터 문제였을지도 모른다. 지난 문제에서 input() 때문에 시간초과 났기에 readline()으로 항상 해결보려 했는데, input()으로 했을때 훨씬 좋은 코드가 나오는걸 보니 다음부턴 상황에 맞게 사용해야겠다. 나는 거의 모든 문제를 배열 깔고, for문 여러번 돌리며 해결하는 경향이 있는것 같다. 그렇게 하면 대부분의 문제가 해결은 되겠지만, 그 보다 훨씬 좋은 방법들이 많은데 전혀 생각해보지 않고 키보드에 손부터 올리는것은 아닌가 하는 의문이 든다. 앞으론 간단한 문제.. 2022. 4. 21.
[백준] 1157 단어공부 - 문자열 끝부분 \n 제거하기 오늘도 상쾌하게 백준 문제로 하루를 시작합니다. 맞는것 같은데 자꾸 "틀렸습니다"가 나오길래 다시 확인해보니 readline()으로 입력시 마지막 문자열에 "\n"이 남네요. str.strip("\n")으로 제거해줍니다. 하루하루가 "맞왜틀?"의 연속이네요. [내 코드길이 > sum(상위 2명의 코드길이)] 네요.. 하하하.. 일단 input()으로 받아서 세팅자체가 짧은것도 있고, input().lower()로 입력과 동시에 lowercase로 받는 방법이 있다는것도 처음 알았습니다. 이렇게 다른 사람의 코드를 보다보면 배우는게 참 많네요. 동시에 이렇게 짜잘하게 경험적으로 배우는것보다 책 한권을 정석적으로 떼는 걸 병행해야 하는거 아닌가? 하는 생각이 드네요. 첫번째 코드는, input().lower.. 2022. 4. 20.
[백준] 1181 단어 정렬 (CLASS 2 에센셜 ) 1시간 넘게 씨름해서 겨우 맞췄다. 코드 길이는 658 B 다른 사람 채점 결과 보니 235 B로 해결한 사람이 있더라. 다른 사람 코드를 보니 정말 간결하다. (문제시 삭제 하겠습니다.) ​중복 제거 시 set() -> list() 을 사용해 집합으로 간단하게 제거했다. 정렬 시 list.sort(key = lambda x : (len(x), x)) 로 간단하게 필요한 조건에 맞게 정렬 했다. 오늘의 결론 key, 람다를 이용한 정렬을 익혀야겠다. 코드가 짧은게 더 읽기 좋다. 변수이름도 간결하게 해야겠다. 참고 자료 람다표현식 : https://dojang.io/mod/page/view.php?id=2359 파이썬 코딩 도장: 32.1 람다 표현식으로 함수 만들기 Unit 32. 람다 표현식 사용하기.. 2022. 4. 19.
[백준] 2562번 최댓값 - list.index()를 사용하자 쉬운 문제라도 배울건 있다. 굉장히 간단한 문제였다. 그렇지만 이 문제를 통해서도 한 수 배우기 위해 다른 사람의 코드를 염탐했다. 아니나 다를까 내가 몰랐던 부분이 있더라. 그건 바로 list.index() 오늘의 결론 풀었다고 그냥 넘어가지 말고 꼭 다른 사람들 코드를 읽고 배우자. 아래 list 자료형 페이지를 몇번이나 들락날락 했는데, index()가 있다는걸 몰랐다. 꼼꼼하게 보자. 참고자료 list 자료형 : https://wikidocs.net/14 위키독스 온라인 책을 제작 공유하는 플랫폼 서비스 wikidocs.net 2022. 4. 19.
[백준] 파이썬 시간 초과 - 입력 방법 변경 (2751번 : 수 정렬하기 2) input()으로 입력 받다보니 시간 초과가 발생 readline()으로 변경 후 정답 인정 2022. 4. 19.
[백준] 파이썬 - 인풋 받기 백준을 시작하는 입문자들 대다수가 인풋값 때문에 당황한 경험이 있을것이다. 나 또한 인풋을 어떻게 줘야하는지 몰라 구글링으로 배웠다. a, b = input().split() #문자열로 a, b = map(int, input().split()) #정수형으로 a, b = map(float, input().split()) #실수형으로 num_list = [int(input()) for _ in range(n)]#리스트로 num_list = list(map(int, input())) #입력 : 123 / 출력 : [1, 2, 3] num_list = list(map(int, input().split())) #입력 : 1 2 3 /출력 : [1, 2, 3] 필요할때마다 더 추가할 예정 시간 초과 문제 때문에 s.. 2022. 4. 19.