본문 바로가기

Today37

23/11/27 스프링 숙련주차 팀과제 담당부분(회원,인증) 고민or 어려웠던점 and 회고 1. 프로필 수정 페이지 요청시 유저 pk값 받아야 하나? 처음에 프로필 수정 페이지 요청시 PathVariable로 유저 id 까지 받는 방식으로 하고 서비스에서 컨트롤한테 받은 id로 User테이블에서 검색한 유저랑 현재 로그인중인 유저 정보로 User테이블랑 유저랑 같은지 체크까지 하는 작업을 했는데 일반 여러 사이트(인프런,코드잇,네이버등등)확인해보니 프로필 수정시 PathVariable로 유저 id안보내고 오직 현재 로그인중인 유저 정보로 User테이블에서 유저 정보 가져오기만한다. 이렇게 하면 클라쪽에서도 오류 받을일 없고 서버쪽도 db에서 일일이 유저정보 가져오고 체크하는 작업 안해도 되서 서로 편하고 좋다. 그래서.. 2023. 11. 27.
23/11/24 프로그래머스 삼총사 먼저 문제를 읽어보고 처음엔 3중 for문이 생각났지만 당연 먼가 안좋은듯한 느낌이 들었다. 그래서 파이썬에서 알아보니 itertools에 combinations인 조합을 이용 하면 된다! 서로 다른 n개가 있는데 순서를 따지지 않고 조합 할 수 있는 모든 경우를 iterator로 반환한다. 만약 [a,b,c] 있을때 list(itertools. combinations)하면 [ (a,b),(a,c),(b,c) ] 가 나온다 import itertools def solution(number): answer = 0 for i in itertools.combinations(number,3): if sum(i) == 0: answer +=1 return answer 이렇게 combinatio.. 2023. 11. 24.
23/11/23 프로그래머스 3진법 뒤집기 문제 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. import math def solution(n): answer = 0 str_num="" while n>0: str_num += str(n % 3) n = n//3 str_len = len(str_num)-1 for i in range(str_len,-1,-1): answer += int(math.pow(3,str_len-i)) * int(str_num[i]) return answer 먼저 앞뒤반전 3진법 문자형으로 만들고 그다음 10진법 변환할때 반복문으로 일일이 다 곱하고 더하면서 계산을 했다. 다 풀.. 2023. 11. 23.
23/11/22 프로그래머스 행렬의 덧셈 문제 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요. 제한조건 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다. def solution(arr1, arr2): for i in range(len(arr1)) : for k in range(len(arr1[0])): arr1[i][k] += arr2[i][k] answer = arr1 return answer 이렇게 2중 반복문으로 같은 위치의 열을 더하는 방식으로 풀었는데 풀고나서 다른 사람 풀이 보니 신기하고 한줄만에 풀고,마지막 테스트 케이스에서.. 2023. 11. 22.
23/11/20 Git History에서 특정 파일 기록 삭제 처음 깃허브 연동할때 gitignore에 올라가지 않도록 설정한 파일 적었는데 작업을 많이 하고 커밋을 많이 해온 상태에서 깃허브에 올리면 안되는 파일(application.properties) 이 올라가 있는걸 발견했다! 1) 그래서 일단 application.properties를 로컬에서 백업용 복사하고 깃허브 자체에서 직접 그 해당 파일을 삭제후 커밋을 했다. 2) 그러면 깃허브가 로컬보다 커밋이 앞선 상태라 pull을 하는데 pull을 하면 로컬에 application.properties 파일도 같이 사라지지만 백업용 복사했으니 다시 application.properties파일을 로컬의 해당 위치에 넣어준다. 3) 이제 깃허브에 application... 2023. 11. 20.
23/11/17 자바에서 문자열 format 지금까지 그냥 출력문에 prinf를 사용해서 포맷을 이용했는데 문자열 변수에 하는 방법도 있다. int cash = 400; System.out.printf("%d원 입니다" cash); String.format() 메소드를 이용한다 int num = 400; String cash = String.format("%d원 입니다. num); 프로그래머스 서울에서 김서방 찾기 먼저 배열에 해당 값이 몇번째 인덱스 있나 알기위해 indexOf()를 사용했고, 문자열에 해당 인덱스 값을 넣어줘야해서 처음엔 어떻게 해야하지 했는데 찾아보니 위에 설명대로 String.format()을 사용하면 끝이다. import java.util.*; class Solution { public Stri.. 2023. 11. 17.
23/11/16 알고리즘 문제 21번- 하샤드 수 일단 문제는 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. class Solution { public boolean solution(int x) { boolean answer = false; String str_x = String.valueOf(x); int str_sum = 0; for (int i = 0; i < str_x.length(); i++) { str_sum += Integer.parseInt( str_x.substring(i,i+.. 2023. 11. 16.
23/11/15 이제 숙련과제에서 회원 가입 부분을 구현을 해보려 하는데 데이터 검증하고,예외처리부분을 알아야한다. Validation 검증 1) 유효성 검사를 위해 DTO의 적용 하고 싶은 필드에 사용 하고 싶은 어노테이션 하면 된다. 예시 코드를 보면 * username 4~10자까지만 허용 * username을 a~z 랑 0~9 만 허용 * 만약 클라가 3자 or 13자 보냈을경우 서버에서 massage에 적힌 메세지 보낸다. @Size(min=4, max=10 , message ="4자 이상 10자 이하이어야 합니다") @Pattern(regexp ="^[a-z0-9]$") private String username; Validation 예외처리 1) 유효성 검사를 하는데 오류 있을시 예외 처리를 하는 방법은 컨.. 2023. 11. 15.
23/11/14 인텔리제이나,비주얼 스튜디오에서 프로젝트 생성후 할땐 자동으로 gitignore 생성해줘서 문제 없었는데 오늘 알고리즘 문제 풀고 깃에 업로드 할때 git add .하다가 올리면 안되는 폴더도 올라가서 꼬여버렸다.... 그래서 git add . 전체를 해도 업로드 안하게 하도록 gitignore 생성하려 한다.(윈도우의 경우) 1. .gitignore 텍스트 파일을 생성해준다. 2. 보기탭에서 파일 확장자명을 클릭해준다.(지금은 클릭한 상태라 위에 1번 캡처에 .txt가 보인다) 3. 그후 . gitignore.txt 이름 변경으로 .txt를 삭제해준다. 이렇게 하고 .gitignore를 add,commit,push 해주면 다음부터 .gitignore안에 설정된 폴더,파일들은 업로드 안하게 된다. 2023. 11. 14.