본문 바로가기

전체 글

(158)
[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로 바뀐 것에 의해 영향을 받아서 구조가 달라졌다 생각했다. 따라서 적당한 위치에 적당한 파일을 넣으면 웹이 ..
백준 5397번 : 키로거 문제 5397번: 키로거 (acmicpc.net) 5397번: 키로거 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입 www.acmicpc.net 아이디어 1406번과 동일한 로직으로 풀이했다. 1406번은 텍스트와 명령어가 따로 주어졌다면, 5397번은 인라인으로 주어졌다는 차이점 정도! 심지어 StringBuilder로 delete, insert하다가 시간 초과 떠서 데크 2개로 해결한 것조차 동일.. 커서가 나오는 문제는 커서 왼쪽 데크, 오른쪽 데크를 만들어서 풀어야 하나보다! 알게된 것 백준 문제는 무조건 시간 복잡도가 낮은 것으로 풀이해야..
백준 1406번 : 에디터 문제 1406번: 에디터 (acmicpc.net) 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 커서를 이용해서 문자열을 편집하는 문제 아이디어 🔸 첫번째 시도 : 커서와 문자열을 분리해서 해결. 문자열 편집에는 char[ ]을 이용. 결과 : 시간 초과 1. 하나의 명령어가 주어질 때 '커서를 계산하는 함수'와 '문자열을 계산하는 함수'를 호출하므로 함수 호출이 빈번 2. char 배열을 이용했으므로 문자열을 편집할 때마다 새로운 길이의 배열을 만들고, → 매번 공간 복잡도 O(n) 이전 배열을 복사하기 위..
백준 2608번 : 로마 숫자 문제 2608번: 로마 숫자 (acmicpc.net) 2608번: 로마 숫자 첫째 줄과 둘째 줄에 하나씩 로마 숫자로 표현된 수가 주어진다. 입력된 각 수는 2000 보다 작거나 같고, 두 수의 합은 4000보다 작다. www.acmicpc.net 주어진 로마 숫자의 합을 정수와 로마 숫자로 출력하는 문제 아이디어 🔸로마문자 to 정수 : 해시맵 이용 순방향의 경우 바로 정수로 바꾸고, 역방향의 경우 다음 문자와 결합하여 정수로 바꿈 마지막 문자는 바로 정수로 바꿈 주어진 로마자가 하나인 경우 구현한 방향 로직을 실행할 수 없으므로 따로 빼주어서 바로 정수로 바꿈 🔸정수 to 로마문자 : 배열 2개 이용 키를 기준으로 정렬된 해시맵을 구현하기 위해서 정적배열 2개 이용 각 인덱스끼리 매핑되게 하면, '정..
[MySQL] 연동을 설정하는 파일에 올바른 정보 넣기 문제 상황 WEB-INF 파일 안에 있는 applicationContext.xml 에서 DB 연동을 관리하고 있다. 여기서 알맞은 데이터베이스의 정보를 적어야 올바르게 연결될 수 있다. 즉, 아래 코드의 빨간색 부분을 내 mysql의 정보로 바꾸면 된다. 해결 방법 1) MySQL Workbench를 실행하여 새로운 connection을 생성한다. 2) connection 이름과 username / password를 설정한다. password는 store in vault ... 를 누르고 내 username에 맞는 패스워드를 입력해주면 된다. ❗이때 입력하는 유저 이름과 비밀번호는 새로 설정하는게 아니라, 내가 미리 만들어둔 접근 정보임❗ 3) Test Connection을 눌러서 연결이 되는지 확인한다..
자바로 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..