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 = ..
[백준 문제풀이 : 5622번] 파이썬 - 다이얼
·
Algorithm/Baekjoon
처음에는 길게 이프와 엘이프를 이용해서 각 알파벳별로 해당 시간을 더해주는 식을 짯었는데 작동은 하는데 왜인지 모르겠지만 더해지는 값이 이상하게 나왔다 1/2수준으로 나옴.. 결국 이유는 찾지 못하고 다른 방법으로 풀어야겠다 싶어 구글링을 해본 결과 다들 다이얼이라는 변수를 지정하여 리스트를 'ABC','DEF'... 이런식으로 만들어 놓고 단어s가 해당 다이얼에 있다면 타임을 더해주는 이중 포문을 이용하여 푸는 것을 확인했다. 그래서 이중 포문을 이용하여 똑같이 풀어보았다. s = list(input()) sum = 0 dial = ['ABC','DEF','GHI','JKL','MNO','PQRS','TUV','WXYZ'] #다이얼을 만들어줌 for j in range(len(s)): #입력한 단어의 ..
[백준 문제풀이 : 2908번] 파이썬 - 상수
·
Algorithm/Baekjoon
처음에는 두 수를 입력받아서 리스트로 변환하여 reverse를 이용하여 풀려고 했었다. 근데 리버스를 이용해서 하려고하니 자꾸 뭔가 복잡해지고 꼬이고 잘안풀려서 다른사람들은 어떻게 풀었는지 확인해봤는데 정말 간단하게 [::-1]을 이용하여 역순으로 바꾸는 방법이 있었다... 그래서 해당 방법을 이용하여 정말 짧은 코드로 풀 수 있었다. a,b = input().split() a = int(a[::-1]) b = int(b[::-1]) if a > b : print(a) else : print(b)