본문 바로가기

전체 글83

[ 알고리즘 ] Next Permutation ( with 백준 10972 ) Next Permutation → 현 순열에서 사전 순으로 다음 순열 생성 → 입력 받은 배열을 오름차순으로 정렬 후 구한다. → 주로 do-while문이 사용 next permutation이 필요한 상황 데이터가 537으로 들어왔을 때 사전순으로 순열을 만들면 4개밖에 나오지않는다. 실제 나와야하는 값은 6개가 나와야한다. next permutation을 사용해 다음 순열 구하는 방법 - 오름차순에서 내림차순으로 순열을 모두 뽑아내고 싶으면 처음엔 꼭 미리 오름차순 정렬하기 - 예시) 10 3 9 8 7 6 5 2 1 의 다음 순열 찾기 [ 해당 데이터는 배열에 들어있다고 가정 ] 1. 꼭대기 인덱스 찾기 - 해당 예시에선 9가 꼭대기 - [ top = N(데이터 개수)-1 = 배열의 끝]로 초기화 후.. 2024. 2. 26.
[ 알고리즘 ] 순열, 조합, 부분집합 순열 → 서로 다른 n개의 원소 중 r개를 뽑아 나열하는 것 → 순서가 존재한다. 구현방법 예시) 1,2,3,4 숫자카드가 있을 때 숫자카드를 중복으로 사용하지않고 만들 수 있는 3자리 수를 모두 출력하시오 1. 반복문 public static void main(String[] args) { for (int i = 1; i < 5; i++) { for (int k = 1; k < 5; k++) { if (i != k) { // 각 자리 숫자는 서로 달라야한다. for (int j = 1; j < 5; j++) { if (k != j && i != j) { // 각 자리 숫자는 서로 달라야한다. System.out.println(i + "" + k + "" + j); } } } } } } 2. 재귀 - 숫.. 2024. 2. 25.
[ Spring ] AssertJ 정리 ( feat. 테스트 코드 작성하는 법 ) 테스트 코드 작성법 BDD 스타일 given : 어떤 상황이 주어졌을 때 when : ~을 실행했을 때 then : 검증한 결과가 ~으로 나와야한다. ⇒ 3단계는 검증단계 : 실행 단계가 예상된 대로 동작하는지 검증 ⇒ 1,2단계는 실행단계 : 사용자 입력을 모방해 테스트 로직 실행 AssertJ란? assertion을 제공하는 자바용 단언문 라이브러리 Junit에서 제공하는 assertEQuals에 비해 에러 메세지와 테스트 코드의 가독성을 높여준다. //junit assertEquals(expected, actual); //AssertJ assertThat(actual).isEqualTo(expected); AssertJ import 정적 import를 하면 AssertJ의 다양한 API를 클래스 이.. 2024. 2. 18.
[ 알고리즘 ] 너비우선탐색 BFS - JAVA [ 특징 ] 그래프 완전 탐색 시작노드에서 출발해 시작노드를 기준으로 가장 가까운 노드를 먼저 방문한다. 그렇기에 목표노드까지 경로가 여러 개일 경우 최단경로를 보장한다. 큐 or FIFO를 이용해 구현한다. [ 시간복잡도 ] O(V+E) [ 구현시 고려해야 하는 점 ] DFS와 동일하게 방문했던 노드는 다시 방문하지않는다. [ 큐로 알아보는 탐색 순서 ] 탐색순서 1 - 2 - 3 - 5 - 6 - 4 2024. 2. 16.
[ Java ] 1차원, 2차원 배열 복사 - 깊은 복사와 얕은 복사 얕은 복사 - 복사 시 객체의 주소 값을 복사하여 동일한 주소 값을 가진다. - 즉 원래 배열의 주솟값을 가져오는 것 - 같은 곳을 가리키기 때문에 한쪽에서 데이터를 변경하면 다른 한쪽도 변경된 데이터에 접근할 수 있다. 깊은 복사 - 복사 시 객체의 데이터 자체를 복사하여 다른 주솟값을 가진다. - 즉 원래 배열을 그대로 가져오는 것 1차원 배열 복사 1. ' = ' 사용 [ 얕은 복사 ] 자바에서 객체를 ' = ' 을 통해 복사하게 되면 얕은 복사가 일어나 두 객체가 같은 곳을 바라보게 된다. 2. clone() 함수 사용 [ 깊은 복사 ] 만약 같은 공간을 가리키는 것이 아니라 배열의 값 자체를 복사하여 새로운 공간에 할당하고 주소를 받고 싶다면 배열의 clone() 함수를 사용하면 된다. 아래 코.. 2024. 2. 8.
[ Java ] int을 String으로, String을 int로 바꾸기 String → int 1. Integer.parseInt()함수 사용하기 2. String.valueof()함수 사용하기 int → String 1. Integer.toString()함수 사용하기 2. int타입의 변수 + "" 2024. 1. 30.
SSAFY 11기 웰컴킷 후기 SSAFY에서 2주간의 스타트캠프 후 본 수업과정 3주 차 진행하는 중... 정말 하루하루가 빠르게 지나간다. 벌써 1월 말이라니 1년이 금방 지나갈 것 같은 이 기분 정말 열심히 해야지 。゚(゚∩´﹏`∩゚)゚。 아무튼 시간을 거슬러 2주 전에 싸피 입학식 날이 있었다. 입과하고 언제 받나 오매불망 기다렸던 웰컴킷도 이 날 수령했다. 하늘색을 베이스로 한 정말 귀여운 박스 자랑하기 위해서 글 쓰는 중 ♡⸜(ˆᗜˆ˵ )⸝♡ 두근두근하며 열었던 상자! 박스를 열면 다양한 스티커들이 날 기다린다. 노트북 투명 케이스를 사서 거기에 붙이고 다녀야겠다. 우히히 ( 특히 1일 1 커밋 스티커... 제발 커밋 좀 해 나 자신... ) 귀여운 스티커를 들었더니 네...? 냅다 ꒪ㅁ꒪ 요런 얼굴이 나를 반겼다. 정말 당.. 2024. 1. 29.
2024.01.02 ~ 01.13 1월 2일, 새해를 맞이하고 바로 싸피에 출근해야 했던 나 사업장이라 보안때문에 카메라에 스티커를 붙이고 산다... 그래서 내부의 어떠한 것도 찍을 수도 없고 완전 맛있는 밥도 찍어서 자랑할 수가 없다. 。゜゜(´O`) ゜゜。 그리고 너무 슬픈게 나는 교육장까지 너무 멀어서 셔틀을 7시 34분에 타야 한다. 근데 셔틀 타는 곳까지 걸어가야 해서 7시에 출발해야 했던 첫날 (물론 이젠 짬(?) 차서 7시 10분에 나감) 두 번째로 슬펐던 건 싸피 갈 때도 어두운 데 집에 올 때도 어두웠다. 아래 사진은 놀랍게도 아침에 셔틀 타러 가면서 찍은 사진 ...ㅎㅎ 정말 햇빛 볼 시간이 점심시간에 식당 가는 그 시간뿐이었다. 저번 주에 시켰던 망곰이 굿즈가 도착했다. 지대 귀엽다. 저번에 망곰이 담요 때부터 느낀 .. 2024. 1. 14.
[ 2023.12.30~2024.01.01 ] 새해기념 동해 여행 이번에도 새해는 동해에서 보내기로 결정한 우리 아침에 다이렉트로 7~8시간 운전하기엔 무리가 있다 판단해서 포항까지만 밤에 가서 하룻밤 자고 출발하기로 했었다. 그런데 포항까지도 3시간은 족히 걸렸던 ⁎●᷄⩊●᷅⁎... 다음날 일어나서 도착한 곳은 속초 중앙시장 원래 가려던 오징어 순대집은 오전인데도 웨이팅이 너무 길어서 ( 예상 웨이팅시간만 2~3시간 ㅋㅋ ) 시장에서 파는 오징어 순대를 먹으러 갔다. 개인적으로 이때까지 먹었던 오징어 순대는 너무 비리기도 했고 별로였어서 기대 안 했는데 정말 맛있었다. 다시 간다면 한 번쯤은 또 먹을 것 같은 그런 맛? 하지만 홍게라면은 절대 안 먹을 것이다... 너무 비린 맛이 강했다 ㅠㅠ 다음으로 새우튀김 집이 유명하다길래 가보았다. 튀김이 너무 크길래 튀김옷이 .. 2024. 1. 14.