본문 바로가기

JAVA

(41)
[JAVA] 순열(Permutation) 참고 블로그 : 순열 Permutation (Java) :: 뱀귤 블로그 (tistory.com) 순열 Permutation (Java) 순열연습 문제 순열이란 n 개의 값 중에서 r 개의 숫자를 모든 순서대로 뽑는 경우를 말합니다. 예를 들어 [1, 2, 3] 이라는 3 개의 배열에서 2 개의 숫자를 뽑는 경우는 [1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, bcp0109.tistory.com 순열이란, n개의 후보군 중에서 r개를 선택해서 순서대로 나열하는 것을 말한다. 수식으로 nPr 로 표현하기도 한다. 값은 n!/(n-r)!로 구할 수 있다. 그럼 순열을 통해서 얻을 수 있는 전체 순서쌍은 어떻게 구할 것인가?!🤔 우리가 순열을 구하는 방법 일단 어떻게 코드를 짤지부터 생..
[JSP] 인텔리제이에서 서블릿 프로젝트 설정하기 순서 1. new project 2. 왼쪽 탭에서 jakarta EE 선택, (최근에 java EE에서 jakarta EE로 바뀜) Create Git repository 체크 (추천) 3. Template : web application 4. Application server : new > tomcat server 선택, tomcat 다운받은 위치 입력 시행착오 정상적으로 프로젝트가 설정된 경우 webapp 패키지, WEB-INF, web.xml, index.jsp폴더가 생성되어야 하는데 내 프로젝트에선 그런 것들이 생성되지 않은 문제가 발생하였다. 처음에는 java EE 가 jakarta EE로 바뀐 것에 의해 영향을 받아서 구조가 달라졌다 생각했다. 따라서 적당한 위치에 적당한 파일을 넣으면 웹이 ..
자바로 html 출력하기 실습 내용 자바의 시스템 속성을 출력하는 html을 자바로 출력해보고자 한다. 🔸 요구 사항 - 자바의 시스템 속성 가져오기 - html 파일 생성 & 작성 - html로 테이블 만들기 자바의 시스템 속성 가져오기 System.getProperty() 사용 자바를 실행할 때, 실행되는 곳의 정보를 얻어오거나 운영체제의 정보가 필요할 때가 있다. 이때 실행 위치에 있는 파일의 정보를 읽어드려야 하는데, 이를 위해 System.getProperty() 를 사용한다. System.getProperty()의 인자로 문자열을 적어넣으면 그 값이 String 으로 출력된다. e.g System.out.print(System.getProperty("os.name");) // => Windows 11가 출력됨 시스템 ..
[JAVA] int에서 오버플로우 문제 발생했을 때 int에서 오버플로우 문제 발생했을 때 발생 원인 int는 4byte즉, 32bit로 -2^31 ~ +2^31-1 즉, 약 ±2,000,000,000 까지만 표현이 가능하고 이 범위를 넘어가면 오버플로우가 발생한다. 발생 상황 int를 여러번 곱하는 for문에서 주로 발생한다. 또한, 1,000,000,007로 나눈 나머지를 요구하는 문제가 있으면 오버플로우가 발생하는지를 의심해봐야한다. 해결 방법 아래 내용 중 하나라도 지키지 않으면 오버플로우가 발생할 수 있다. 1) 계산하는 변수를 int가 아니라 long으로 선언한다. 2) for문 안에서 %= 1,000,000,007을 해준다. for문에서 곱셈을 다 하고 return 직전에 mod연산을 해주면 이미 오버헤드가 발생한 이후이므로 효과가 없다. 3..
[JAVA] Array to List 알고리즘 문제를 풀 때 입력은 array로 주어지지만, 이 arryay에 접근해서 다양한 조작을 해야 할 때가 많다. 이때 배열을 List형 컬랙션으로 바꾸면 add로 삽입, remove로 삭제, set으로 수정, contains와 indexOf로 탐색 등 다양한 조작이 가능하다. 배열을 리스트로 바꾸기 위한 키워드는 Arrays.asList(arr) 와 Collections.addAll(list, arr); 이다. 1. Arrays.asList(arr) List list = Arrays.asList(arr); 를 사용하여 배열을 List로 바꿀 수 있다. ※ 주의 : 여기서 asList( )메소드가 리턴하는 List는 불변(unmodifiable) 속성의 list view를 리턴한다. unmodifia..
[JAVA] 문자열 자르기 substring과 split 자바에서 문자열은 substring(start_idx, (end_idx))과 split("")으로 자를 수 있다. substring과 indexOf(str)를 같이 사용하면 특정 문자열이 나오는 시점부터 끝까지 자를 수 있다. split은 주로 구분자를 이용해서 문자열 배열을 만들 때 사용한다. substring 주의사항 : 예외 처리 substring에서 파라미터로 넘겨주는 idx가 string의 영역을 넘어가면, StringIndexOutOfBoundsException가 발생할 수 있다. 따라서 try - catch 구분으로 .substring( )을 감싸주는게 바람직하다. split 주의사항 : 정규식 기호 Java API에서 split를 찾아보면 Splits this..
[JAVA] StringBuilder 주요 메소드와 사용 방법 String 클래스와 동일 메소드 charAt(int idx) : 특정 인덱스 위치의 문자 반환 indexOf(String str) / lastIndexOf(String str) : 문자열 검색해서 첫번째 / 마지막 위치 반환 substring(int start, (int end)) : 인덱싱. 파라미터가 하나라면 해당 인덱스부터 끝까지, 두개라면 시작점과 끝점-1 까지 인덱싱 length() : 문자열 길이 리턴 문자열 처리 추가 .append(String str) : 맨 뒤에 문자열을 추가 .insert(int idx, String str) : idx의 위치에 문자열 추가 삭제 .deleteCharAt(int index) : 인덱스에 위치한 문자 하나를 삭제한다. (sb.deleteCharAt(3))..
[JAVA] String / StringBuilder / StringBuffer 차이점 문자열 처리 문제에서 어떤 클래스를 사용해야 가장 효율적인가?🤔 를 고민하다가 본 글을 작성하게 되었다. String과 StringBuilder, StringBuffer의 차이점 핵심 차이점 : String은 불변의 속성을 갖지만 StringBuilder와 StringBuffer는 가변성을 갖는다. 파생 차이점 : 문자열을 수정할 때, String은 새로운 문자열 객체를 만들고 기존 객체는 Gardage로 남겨놓는다. 따라서 수정이 빈번하게 일어날 경우 많은 Gardage가 생겨서 메모리 부족으로 어플리케이션 성능이 저하된다. 반면 StringBuilder와 StringBuffer는 동일한 객체에서 문자열을 변경하는게 가능하다. ❗결론 : 문자열을 자주 읽어들이는 경우 더 가벼운 String을 사용하면 ..