자바25 [프로그래머스] 최댓값 만들기 (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. [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. [MyBatis] Parameter not found. Available parameters are [arg1, arg0, param1, param2] 이슈 리액트에서 회원 정보 변경 데이터를 백엔드로 전달해 업데이트 로직을 구현하던 중, xml 파일의 쿼리문에서 [MyBatis] Parameter 'newUserName' not found. Available parameters are [arg1, arg0, param1, param2] 라는 오류가 발생하였다. UPDATE user SET userName = #{newUserName} WHERE userId = #{userId} 분명 'newUserName' 데이터가 정상적으로 전달되었고, 쿼리문도 틀린 부분이 없어 헤매다가 'Parameter' 에서 힌트를 찾을 수 있었다. 원인 변경 전 메소드 public int changeUserName(@RequestBody Map requestData) { //re.. 2023. 8. 29. [프로그래머스] 완주하지 못한 선수 문제 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한 조건 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예 participant completion return ["leo", "kiki".. 2023. 6. 29. [프로그래머스] 예산 문제 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 없습니다. 그래서 최대한 많은 부서의 물품을 구매해 줄 수 있도록 하려고 합니다. 물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다. 예를 들어 1,000원을 신청한 부서에는 정확히 1,000원을 지원해야 하며, 1,000원보다 적은 금액을 지원해 줄 수는 없습니다. 부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어질 때, 최대 몇 개의 부서에 물품을 지원할 수 있는지 return 하도록 solution 함수를 완성해주세요. 제한 조건 d는 부서별로 신청한 금액.. 2023. 6. 21. 이전 1 2 3 다음