[백준 문제풀이] 20920 영단어 암기는 괴로워 - 파이썬
·
Algorithm
백준 20920: 영단어 암기는 괴로워 (Python)1. Lambda를 활용한 다중 조건 정렬이번 문제에서 가장 흥미로웠던 부분은 여러 조건을 동시에 고려해야 하는 정렬이었습니다. Python의 sorted() 함수와 lambda를 사용하면 이러한 다중 조건 정렬을 매우 우아하게 구현할 수 있습니다.sorted_words = sorted(word_count.keys(), key=lambda x: (-word_count[x], -len(x), x))이 한 줄의 코드는 다음 세 가지 조건을 순차적으로 적용합니다:단어 빈도수 내림차순 (-word_count[x])단어 길이 내림차순 (-len(x))알파벳 사전순 (x)여기서 주목할 점은 내림차순 정렬을 위해 마이너스(-)를 사용한 것입니다. 이는 Pyt..
[백준 문제풀이] 1764 듣보잡 - 파이썬
·
Algorithm/Baekjoon
백준 1764번 - 듣보잡 문제 풀이 및 최적화1. 문제 접근 방식처음에는 문제를 가장 직관적인 방식으로 접근했습니다. 두 개의 리스트를 만들어서 각각의 입력을 받고, 첫 번째 리스트의 각 요소가 두 번째 리스트에 있는지 확인하는 방식으로 구현했습니다.최초 작성 코드n, m = map(int, input().split())N = []M = []for _ in range(n): txt = input() N.append(txt)for _ in range(m): txt = input() M.append(txt)count = 0result = []for i in N : if i in M : count += 1 result.append(i)result.sort(..
JSP로 게시판 페이징 구현하기: 코드와 함께 알아보는 동작 원리 (Paging Algorithm)
·
Algorithm
이번 포스팅에서는 내가 학원에서 JSP를 활용하여 간단한 게시판 페이징을 구현하는 방법을 배워 온것을 까먹지 않게 기록해둠의 목적과 이 알고리즘에 대해 공유하고자 적어보려한다. Paging Algorithm이란 사용자가 요청한 페이지에 해당하는 게시글을 데이터베이스에서 가져와서 보여주는 기능이다. 이를 위해서는 다양한 클래스와 메서드를 사용하며, 각각의 역할과 동작 원리를 자세하게 파헤쳐 보자! 1. 페이징 알고리즘 이해하기 우선, 페이징 알고리즘을 이해해야 한다. 사용자가 요청한 페이지 번호와 전체 게시글 수를 기반으로 필요한 정보를 계산한다. 이 때 필요한 항목은 다음과 같다. reqPage: 사용자가 요청한 페이지 번호 totalBoard: 총 게시글 수 boardCount: 한 페이지에 출력할 게..
[백준 문제풀이 : 5086번] 파이썬 - 배수와 약수
·
Algorithm/Baekjoon
일반 수학문제들에 비해 난이도가 굉장히 쉬워졌다. 보자마자 코드를 바로바로 써내려갈 수 있었다. 처음에 썻던 코드가 바로 이것. while True: a,b = map(int, input().split()) if a and b == 0: break if b % a == 0: print("factor") elif a % b == 0: print("multiple") else: print("neither") 근데 자꾸 런타임 오류라고 뜬다. 뭐가 문제인지 모르겠어서 구글링도 해보고 했는데 언뜻보기에는 다 똑같은 식으로 보인다. 딱 한가지 다른 점이있다면 나는 a and b == 0 으로 썻지만 다른사람은 둘다 0과 같다고 따로 표기를 한 점일까? while True: a,b = map(int, input()..
[백준 문제풀이 : 2720번] 파이썬 - 세탁소 시장 동혁
·
Algorithm/Baekjoon
단순히 케이스 수 만큼 반복하는 반복문실행 이후, 몫과 나머지를 구하는 식만 써서 프린트만 하면 될 것 같다. t = int(input()) for _ in range(t): c = int(input()) Q = c // 25 q = c % 25 D = q // 10 d = q % 10 N = d // 5 P = d % 5 print("{0} {1} {2} {3}".format(Q,D,N,P)) 이것만으로도 충분히 정답을 받을 수 있지만 뭔가 좀 더 짧게 쓸 수 있는 방법은 없을까? 구글링 해서 조금 더 좋은 정답을 알아보기로 했다. n = int(input()) for _ in range(n): money = int(input()) for i in [25, 10, 5, 1]: print(money//i..
[백준 문제풀이 : 11005번] 파이썬 - 진법 변환2
·
Algorithm/Baekjoon
이 전의 문제에서는 조금 생각도 하면서 고생했었는데 이번에는 전의 문제와 다르게 반대로 숫자를 진법으로 변환하는 문제이다. 이 문제는 생각보다 굉장히 간단하겠다 싶었다. 단순히 나누기를 반복하며 몫과 몫을 나누어 해당 진법의 단어로 표현해주기만 하면 되는 문제이기 때문. 숫자가 얼마나 클지 모르기 때문에 확정된 반복횟수를 정하는 것은 무리가 있다고 판단하여 while문을 활용하였다. word = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" n, b = map(int, input().split()) y = 0 result = [] while n >= y : y = n % b n = n // b result.append(word[y]) result = result[::-1] for ..
[백준 문제풀이 : 2941번] 파이썬 - 크로아티아 알파벳
·
Algorithm/Baekjoon
먼저 주어진 크로아티아 알파벳을 담은 리스트를 작성해주고, 단어를 입력받은뒤, for문을 이용해 크로아티아 리스트를 돌려주고 그곳에서 해당 단어를 한자리 문자 아무거나 바꿔준다(replace) 그리고 바꿔준 문자의 개수를 출력해주면 된다! croatia = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='] word = input() for i in croatia : word = word.replace(i, '*') # input 변수와 동일한 이름의 변수 print(len(word))
[백준 문제풀이 : 10988번] 파이썬 - 펠린드롬인지 확인하기
·
Algorithm/Baekjoon
처음에는 리버스를 활용할 생각을 못하고 리스트로 만들어 하나하나 쪼개서 반반 나눈 리스트를 만든 뒤 두 리스트가 같은지 확인하는 식으로 써내려 나갔다. s = input() n = 0 front = [] back = [] if n % 2 == 0 : // 입력한 단어가 홀수인지 짝수인지 구분하기 n = len(s)//2 for i in range(len(s)): if i+1 n : back.append(s[i]) else: n = len(s)//2+1 for i in range(len(s)): if i+1 n : back.append(s[i]) back_1 = back[::-1] //뒷부분은 역순으로 바꿔서 같은지 확인하기 result = ..