해당 글에서는 1차원 배열을 2차원 배열로 바꾸거나 2차원 배열을 1차원 배열로 바꾸는 방법에 대해 알아봅니다. 1) 1차원 배열을 2차원 배열로 변환방법 1. for문을 이용한 방법 💡 for문을 이용한 방법 1. 1부터 9까지의 숫자가 저장되어 1차원 배열을 구성합니다. 그리고 rows(행)와 cols(열) 변수는 각각 2차원 배열의 행과 열의 수를 저장하고 있습니다. 2. rows(행)와 cols(열)의 크기를 가진 빈 2차원 배열을 선언합니다. 3. row(행)과 cols(열)을 순회하면서 1차원 배열의 값을 2차원 배열에 대입합니다. 4. 결과값을 출력합니다. // 1 int[] oneDArray = {1, 2, 3, 4, 5, 6, 7, 8, 9}; int rows = 3; int cols =..
해당 글에서는 SecureRandom 클래스를 사용하여서 랜덤 문자열을 생성하는 방법에 대해 알아봅니다. 또한 임시 비밀번호로 이용할 수 있는 방법에 대해서도 알아봅니다. 1) SecureRandom을 이용한 랜덤 숫자/문자(난수) 생성방법💡 SecureRandom을 이용한 랜덤 숫자/문자(난수) 생성방법 - 아래의 글을 참고하시면 이전에 작성한 글을 확인하실 수 있습니다.import java.security.SecureRandom; /** * 공통 유틸 * * @author : lee * @fileName : CommonUtils * @since : 1/22/24 */ public class CommonUtils { private CommonUtils() { } /** * 자릿수(digit) 만큼 랜덤..
해당 글에서는 소문자, 대문자 범위 내에서 합과 차이를 구하는 방법에 대해 알아봅니다. 해당 방법은 ASCII Code를 이용하여 구합니다. 💡[참고] ASCII Code 표 1) 두 개의 문자 간의 차이 💡 두 개의 문자 간의 차이 - 두 개의 문자(char)가 존재하는 경우 소문자, 대문자 범위 내에서 차이를 구하는 방법에 대해 알아봅니다. 1. 소문자 내에서 문자 간의 차이 💡 소문자 내에서 문자 간의 차이 - 소문자의 ASCII Code 범위(97 ~ 122)를 이용하여 문자 간의 차이를 구합니다. 1. 함수는 두 개의 char형 파라미터 a와 b를 받습니다. 2. 두 문자 a와 b를 문자열로 변환한 후, 첫 번째 문자를 가져와 ASCII 코드값으로 변환합니다. 이후 두 ASCII 코드값의 차를 ..
해당 글에서는 제공받은 문자열을 기반으로 회전수(rotation) 값에 따라 각각 문자를 왼쪽으로 이동하거나 오른쪽으로 이동하는 방법에 대해 알아봅니다. 1) 소문자의 왼쪽/오른쪽 회전(이동) 방법 1. 그림으로 이해 💡 소문자의 왼쪽 회전(이동) 방법 - "abcdefghijk"의 문자열의 각각의 요소를 분리한 뒤 왼쪽으로 3칸 이동하는 과정입니다.(rotation = -3) 💡 소문자의 오른쪽 회전(이동) 방법 - "abcdefghijk"의 문자열의 각각의 요소를 분리한 뒤 오른쪽으로 3칸 이동하는 과정입니다.(rotation = 3) 2. 소스코드로 이해 💡 소문자 문자열 왼쪽/오른쪽 회전(이동) 방법 - “abcdefghijk”라는 문자열을 제공받았을 때 소문자를 기준으로 rotation(회전 수..
해당 글에서는 하나의 배열을 기준으로 요소들 간의 비교 방법에 대해서 알아봅니다. 1) 하나의 요소를 기준으로 전체 요소 비교 방법 1. 하나의 요소 기준 전체 요소 비교 : 본인 포함 💡 하나의 요소 기준 전체 요소 비교 : 본인 포함 - 비교 기준이 되는 arr[i] 값을 기준으로 ‘내 자신’을 포함하여 다음 요소(arr[j])를 비교합니다. int[] arr = {1, 2, 3, 4, 4, 5, 6}; for (int i = 0; i < arr.length; i++) { for (int j = i; j < arr.length; j++) { System.out.println("arr[i] :: " + arr[i] + " arr[j] :: " + arr[j]); } } arr[i] arr[j] 1 1 ..
해당 글에서는 IPv4, IPv6에 대한 정규식을 수행하는 방법에 대해 알아봅니다. 1) IPv4 💡 IPv4 - 인터넷 프로토콜 버전 4로 컴퓨터와 같은 디바이스가 인터넷을 통해 서로 통신하기 위해 사용하는 주소 체계입니다. - 각 디바이스에 고유한 식별자를 제공하며, 이를 통해 데이터 패킷이 올바른 위치로 전송될 수 있게 합니다. - IPv4 주소는 32비트로 구성되며, 일반적으로 점으로 구분된 4개의 숫자로 표현됩니다. 1. IPv4 💡 IPv4 형태 - Octet의 범위는 점(.)의 구분자를 기준으로 4자리 모두 0 ~ 255자리의 값을 가집니다. - 또한 0 ~ 255 범위 내에서 ‘0xx 형태의 값’을 가지는 경우 해당 경우에 포함되지 않습니다. Octet Start Range Octet En..
해당 글에서는 Math 함수가 아닌 SecureRandom 함수를 이용하여 랜덤 한 숫자/문자(난수) 생성방법에 대해 알아봅니다. 1) Math.random() 함수를 사용하지 않는 이유 💡 Random 함수를 사용하지 않는 이유 - SonarQube를 통해서 Security Hotspots로 Math.random() 함수에서 아래와 같은 문제점이 발생하였습니다. - 여기에서 이 의사 난수 생성기를 사용하는 것이 안전한지 확인하세요.(Make sure that using this pseudorandom number generator is safe here.) - 해당 문제는 ‘난수 생성‘에 대해 보안에 민감하다는 문제점이 발생합니다. 이는 Math.random() 역시 난수를 생성하는 데 있어서 보안적으..
해당 글에서는 문자열 중 문자를 맨 앞으로 보내거나 맨 뒤로 보내는 방법에 대해 알아봅니다. 1) 문자열 내의 마지막 문자를 가장 앞으로 보내기 1. 문자열 내의 마지막 문자를 1번 가장 앞으로 보내기 💡 문자열 내의 문자를 1번 가장 앞으로 보내기 - 주어진 문자열에서 마지막 문자를 가장 앞으로 1번 보내는 방법입니다. 💡 moveCharFirst() 함수 1. 마지막 문자를 추출합니다. 2. 첫번째 문자부터 마지막 문자 이전까지 문자열을 재구성합니다. 3. 마지막 문자에 구성한 첫번째 문자에서부터 마지막 문자 이전까지를 합쳐 재구성합니다. /** * 문자열 내의 마지막 문자를 가장 앞으로 보내기 * * @return */ @GetMapping("/9") public ResponseEntity> que..
해당 글에서는 간단한 개발 방법으로 배열을 반으로 나누어 재구성하는 방법에 대해 알아봅니다. 1) for문을 이용한 방식 💡 for문을 이용한 방식 - 배열의 요소의 개수가 짝수인 경우도 있지만, ‘홀수’인 경우 인덱스의 값에 따라 각각 처리를 해야 합니다. - 또한 요소의 개수가 홀수이면 ‘앞’에 요소를 더 둘 것인지 아니면 ‘뒤’에 요소를 더 둘 것인지에 대해 정하고 반을 나눠서 재구성합니다. /** * 배열을 반으로 나누기 : for 문을 이용한 방법 * * @return */ @GetMapping("/1") public ResponseEntity