목록전체 글 (269)
Coding Planet
public class StrToInt { public int getStrToInt(String str) { boolean sign = true; int value = 0; for (char ch : str.toCharArray()) { if (ch == '-') { plus = false; } else { int num = ch - 48; value = num+value*10; } } return (plus==true)? value : -1*value; } } 사실 이 문제는 Integer.parseInt()메서드를 사용하면 별다른 수식이 필요 없이 간단히 풀리는 문제이다. 그러나 알고리즘을 공부한다는 의미에서 논리에 따라 코드를 짰고 역대급으로 오랜 시간이 걸렸다. 먼저 부호는 + - 단 두개의 값만..
왜 지금까지 삼항 연산자 잘 쓰다가 갑자기 if else 썼는지 모를...? Math.sqrt() : 입력값의 제곱근을 구해주는 메서드 -> Square root Math.pow(입력값, 제곱단위): 입력값의 제곱을 구해주는 함수 -> Power
약수란 어떤 수를 나누었을 때 나누어 떨어지게 하는 자연수이다. 즉 나눗셈을 했을 때 나머지가 0이어야 한다. sum 변수에 나머지가 0인 자연수를 누적합 하면 된다. 만약 약수의 수를 구하라는 문제가 나온다면 cnt 라는 변수를 선언하고 cnt++ 해주면 될 것 같다. 👀다른 사람의 풀이 나름 빨리 잘 풀었다고 생각햇는데 이 풀이를 보고 이마를 탁 쳤다 ㅠㅠ 약수는 그 특성상 가장 큰 약수는 그 자신이고 두번째로 큰 약수는 자기 자신의 절반 이다.... 이 부분을 수학적으로 알고 있었음에도 불구하고 코드에 반영할 생각을 못했다. 만약 num이 엄청나게 큰 수라면 성능에 많은 차이가 생겼을 것 같다.
레벨1 문제 중 정답률이 가장 높은 쉬운 문제 삼항 연산자로 간단히 답을 낼 수 있다.
✨내 풀이 class Solution { public int solution(int num) { long n = (long)num; for(int i =0; ilong 형변환 없이 코드를 짰을 때 테스트3번이 488이 리턴되면서 통과하지 못했다. 문제 조건에 따르면 테스트 3번의 경우 연산 횟수가 500이 넘어 -1을 반환해야하는데 계속 488을 반환했다 😅 제한 사항을 잘 보면 num의 범위가 8,000,000인데 짝수의 경우 나누기 2를 하므로 숫자는 줄어들지만 홀수의 경우 *3+1을 수행하기 때문에 int가 데이터 범위를 넘어서는 경우가 생긴다. 예를 들면 7,999,999인 경우 몇 번 계산을 하지 않은 경우에도 int의 계산범위를 넘어버린다 (-> 머리가 나쁘면 몸이 고생한다고 심지어 직접 계산..
주의해야 할 것! ==는 객체의 주소값을 비교하는 것이고 equals()는 문자열 값 자체를 비교한다. 이 부분 유의할 것 class Solution { public String solution(String[] seoul) { String answer = ""; for(int i = 0; i
1. 암호화 필터(EncryptFilter) (필터에 대한 설명은 이전 포스트 참고: https://sharonprogress.tistory.com/150) 로그인을 기능을 구현하기 위해서는 이메일, 비밀번호가 일치하는 회원을 조회하는 과정이 필요하다. 이때 개인정보에 해당하는 비밀번호의 경우 개인정보보호법에 의해 암호화를 해야하는데, 이를 위해 암호화 필터가 필요하다. 암호화 필터는 보안이 필요한 로그인, 회원가입, 비밀번호 변경, 회원 탈퇴등에 쓰이는 필터로 인코딩 필터와는 달리 선택적으로 사용되므로 url을 String[]로 설정해야한다. 다만, 이 필터에서는 비밀번호 값을 재 세팅하는 것이 불가능해 Wrapper Class를 사용해 오버라이딩을 하고 그 값을 반환 받아야 한다. package ed..
암호화 필터를 공부하면서 사용자가 입력한 비밀번호 등 암호화가 필요한 정보를 SHA-512를 통해 암호화했다. SHA-512는 비밀번호를 해시화시키는 알고리즘인데 이 과정에서 MessageDigest 클래스를 활용했다. 1. MessageDigest 클래스란? MessageDigest 클래스는 자바에서 단방향 해시 함수 값을 구할 때 사용한다. 사용자가 웹페이지에서 로그인을 할 경우 개인정보보호법에 의해 비밀번호를 그대로 서버에 저장하는 것이 아니라 해시값으로 변환하여 저장하게 되는데 이 때 사용되는 MD5 또는 SHA등의 메세지 다이제스트 알고리즘의 기능을 제공한다. SHA-512란 256bit 암호화 해시 함수를 의미한다. 2. MessageDigest에서 자주 사용하는 메서드 getInstance(..
1. 필터(Filter)란? 클라이언트 요청 시 생성되는 HttpServletRequest, HttpServletResponse가 요청을 처리하는 Servlet에 도달하기 전에 특정코드를 수행하는 Class 즉, 서블릿에서 공통적으로 처리되어야할 요청의 전처리 또는 후처리를 담당한다. 따라서 암호화, doPost의 인코딩, 이미지 변환 등 공통적으로 처리해야할 코드를 수행하도록 한다. 2. 필터(Filter)의 요청흐름, 라이프사이클 1)요청흐름: 클라이언트 -> 요청 -> HttpServletRequest, HttpServletResponse 생성 -> Filter -> 요청처리 Servlet 2) 라이프사이클: 생성->초기화 -> 필터 -> 종료 3.Filter code @WebFilter("url ..
1. MVC(Model View Controller) 패턴 Model: 데이터를 저장하고 있는 역할, 혹은 DB에 접근해서 데이터를 입출력하는 객체로 백그라운드에서 동작하는 로직을 의미한다. View: 사용자가 보게되는 화면, 데이터의 입력과 출력을 담당한다. Controller: 사용자의 입력처리와 흐름 제어를 담당한다. 사용자의 요청을 받아 처리한 후 응답 화면을 지정한다. 2. JDBC에 MVC 패턴 적용하기 - Run : Servlet(JSP와 연동) - Member View : index.html - JDBC Templet : DB 연결(Connection 생성) 자동커밋 off, 트랜젝션 제어, jDBC 객체 자원반환(close) -> 이러한 JDBC에서 반복 사용되는 코드를 모아둔 클래스 -..