본문 바로가기

java28

[프로그래머스] 최댓값 만들기 (2) 문제 설명 및 예시 주어진 배열의 원소 중 두 개를 곱한 최댓값을 반환하는 함수를 작성하는 문제이다. 풀이 1. 우선 배열의 원소를 오름차순으로 정렬한다. 2. 배열의 길이를 구한다. 3. 배열에 음수가 포함될 수 있으므로 가장 작은 음수끼리의 곱 , 가장 큰 양수끼리의 곱을 비교해 최댓값을 반환해야한다. 4. 배열 길이를 활용해 가장 큰 두 개의 양수 (마지막 원소, 그 전 원소)를 곱한 값과 가장 작은 두 개의 음수 (첫 번째 원소, 두 번째 원소)를 곱한 값 중 큰 값을 반환한다. *Math.max() 함수 활용 최댓값을 구하는 문제는 흔히 볼 수 있고 익숙하지만 이번 문제는 음수까지 고려해야하는게 포인트라고 생각한다. 배열의 정렬과 Math.max()함수를 활용하면 어렵지 않게 해결할 수 있는 문.. 2023. 10. 16.
[프로그래머스] 피자 나눠 먹기 (2) 문제 설명 및 예시 피자를 나눠먹을 사람의 수 n이 주어지고, 모두가 조각을 균등하게 먹을 수 있는 피자의 최소 판 수를 구하는 문제이다. 풀이 1. 인원 수에 상관없이 피자는 최소 1판이 필요하므로 선언한다. 2. 피자 조각은 항상 6조각이고, 피자 판 수와 곱해서 인원 수로 나누었을 때 나머지값이 없다면 모두 균등하게 분배된 것이므로 반복문을 중단하고, 나머지값이 존재하면 피자 판 수를 증가하는 while문을 작성한다. 조건문과 반복문을 사용해야 하는 것을 캐치했다면 금방 해결할 수 있는 문제였다. while문을 활용하여 어렵지 않게 통과할 수 있었다 👍 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/120815 프로그래머스 코드 중심.. 2023. 10. 16.
[프로그래머스] 다음에 올 숫자 문제 설명 및 예시 주어진 배열은 등차수열 혹은 등비수열이고, 원소끼리의 공차 혹은 공비를 구해 그 다음 올 숫자를 반환하는 문제이다. 풀이 배열이 등차수열인지 등비수열인지 판단해야 값을 구할 수 있다. 1. 배열의 두 번째 원소와 첫 번째 원소의 차이 값 , 세 번째 원소와 두 번째 원소의 차이 값을 구한다. 2. 두 차이값이 일치하면 모든 원소 끼리의 차이 값이 동일하므로 등차수열이고, 일치하지 않으면 등비수열이다. 테스트에 무난하게 통과하였다. 등차수열과 등비수열의 차이, 배열의 원소 개념을 알고있다면 충분히 풀 수 있는 문제라고 생각한다. 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/120924 2023. 10. 13.
[프로그래머스] 로그인 성공? 문제 설명 및 예시 [아이디, 비밀번호]가 담긴 배열 id_pw와 [아이디,비밀번호 배열]을 담고 있는 2차 배열 db를 비교해 입력값에 따라 결과를 반환하는 문제이다. 풀이 문제에서 id_pw 배열은 [아이디,비밀번호] db 2차 배열은 [[아이디,비밀번호],[아이디,비밀번호]] 처럼 고정된 패턴으로 정보를 담기 때문에 이를 활용하면 쉽게 풀이가 가능하다. 1. 입력 정보를 변수로 선언한다. 2. 2차 배열 db에서 for문을 통해 각 배열의 첫 번째 원소는 아이디, 두 번째 원소는 비밀번호로 선언한다. 3. if 조건문으로 inputId - userId , inputPw - userPw 가 모두 일치하는 경우 / 아이디만 일치하는 경우 / 모두 불일치하는 경우에 따른 반환값을 정해준다. 오류 없이 테.. 2023. 10. 13.
Stack (스택) 프로그래머스 사이트에서 문제를 풀다가 Java의 Stack에 대해 알게 되었다. Stack에 대한 기본 설명과 활용 예제를 기록하기 위해 포스트를 작성하려 한다. 스택(Stack) 자료 구조 중 하나로, 데이터를 일렬로 나열한 구조로, 데이터를 저장하거나 꺼낼 때에는 가장 최근에 저장한 데이터부터 차례로 처리한다. 이를 "Last In, First Out (LIFO)"라고 부르는데 Java에서는 java.util.Stack 클래스나 java.util.Deque 인터페이스를 사용하여 스택을 구현할 수 있다. 스택의 주요 메서드 1. push(E item) : 스택에 요소를 추가한다. 가장 최근에 추가한 요소가 스택의 맨 위에 위치함 예시 import java.util.Stack; public class S.. 2023. 10. 11.
[Java] BCryptPasswordEncoder 암호화 오류 원인 및 해결 유저의 비밀번호 변경 기능을 구현하던 중, 암호화와 관련된 오류의 원인과 해결 과정을 기록하려고 한다. 우선 리액트에서 axios로 유저의 아이디,기존 비밀번호,변경할 비밀번호를 전달 받은 후 유저 테이블에 저장된 비밀번호와 입력받은 비밀번호를 비교해 일치할 경우, 변경할 비밀번호로 업데이트하려고 계획을 세웠다. 여기서 주의해야 할 점은 비밀번호가 테이블에 저장될 때 BCryptPasswordEncoder로 암호화되었기 때문에 유저가 전달한 기존 비밀번호를 그냥 비교하는 것이 아니라 BCryptPasswordEncoder를 이용해 암호화해야 한다는 것이었다. 위처럼 메소드를 만들어 호출했더니 비밀번호 불일치가 콘솔에 찍혔다. 사용자가 전달한 기존 비밀번호 값이 암호화되어 저장되었으니 비교할 때도 암호화 .. 2023. 9. 6.
[Java] JavaMailSender 이메일 한글 인식 오류 원인 및 해결 SMTP 인증과 Google 계정 보안 문제도 해결 후 이메일 발송이 정상적으로 처리되는 것을 확인했다. 그런데.. 메일을 확인했더니 또 한번 오류에 부딪히고 말았다. 제목은 잘 전달되었는데, 메일의 내용 중 한글 부분만 제대로 인식을 못하는 문제였다. 아이디 찾기 결과 {{userName}} 님의 SFDB 아이디는 '{{userId}}' 입니다. 메일 내용을 전달하는 html 파일의 일부인데 딱 한글 부분만 인식을 못하고 있었다. 처음에는 인코딩 문제이겠거니 싶어 태그에 'UTF-8'을 작성해보기도 하고, 스프링부트 설정도 다시 확인해봤지만 어떻게 해도 인코딩이 되지 않아 문제가 반복되었다. 라이브러리 문제인가 싶어 freemarker를 thymeleaf로 수정해보았는데도 오류는 여전했다. 차근차근 되.. 2023. 8. 31.
[Java] JavaMailSender "javax.mail.AuthenticationFailedException: 535-5.7.8 Username and Password not accepted." 오류 원인 및 해결 JavaMailSender STARTTLS 인증 오류를 해결한 후 또 다른 에러가 발생하였다.. 에러 메시지는 아래와 같았는데 [Request processing failed; nested exception is org.springframework.mail.MailAuthenticationException: Authentication failed; nested exception is javax.mail.AuthenticationFailedException: 535-5.7.8 Username and Password not accepted. Learn more at 535 5.7.8 https://support.google.com/mail/?p=BadCredentials e8-20020a62ee0800000.. 2023. 8. 31.
[Java] JavaMailSender "com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first." 오류 원인 및 해결법 스프링부트에서 JavaMailSender로 이메일 발송 기능을 구현 중 여러가지 오류가 발생하여 고치는데 꽤 애를 먹었다.. 첫번째 오류는 아래와 같은 메시지를 포함하고 있었다. Failed message 1: com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. y4-20020aa78544000000b00679a4b56e41sm293970pfn.43 - gsmtp ] with root cause org.springframework.mail.MailSendException: Failed messages: com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 .. 2023. 8. 31.