숫자 변환하기 (Java) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 성능 요약 메모리: 79.5 MB, 시간: 18.62 ms 문제 설명 자연수 x를 y로 변환하려고 합니다. 사용할 수 있는 연산은 다음과 같습니다. x에 n을 더합니다 x에 2를 곱합니다. x에 3을 곱합니다. 자연수 x, y, n이 매개변수로 주어질 때, x를 y로 변환하기 위해 필요한 최소 연산 횟수를 return하도록 solution 함수를 완성해주세요. 이때 x를 y로 만들 수 없다면 -1을 return 해주세요. 제한사항 1 ≤ x ≤ y ≤ 1,000,000 1 ≤ n <..
뒤에 있는 큰 수 찾기 (LV2) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 성능 요약 메모리: 195 MB, 시간: 60.27 ms 문제 설명 정수로 이루어진 배열 numbers가 있습니다. 배열 의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷 큰수라고 합니다. 정수 배열 numbers가 매개변수로 주어질 때, 모든 원소에 대한 뒷 큰수들을 차례로 담은 배열을 return 하도록 solution 함수를 완성해주세요. 단, 뒷 큰수가 존재하지 않는 원소는 -1을 담습니다. 제한사항 4 ≤ numbers의..
직렬화 - 역직렬화? 직렬화(Serialization)는 자바 객체를 파일, 디비, 메모리 등 외부 시스템과 통신할 수 있도록 바이트 상태인 데이터로 변환하는 것을 의미하며, 반대로 바이트 상태인 데이터를 객체로 변환하는 것을 역직렬화(De-Serialization)라고 합니다. 외부 시스템과 통신하기 위해 바이트로 변환하는 이유는 뭘까? 자체 메모리 위에서만 통신한다면 JVM 힙 영역에 있는 주솟값으로 객체를 주고받을 수 있다. 하지만 외부 시스템과 통신하기 위해선 주솟값은 의미 없기 때문에 실제 값을 전송하기 위한 스트림 통로와 바이트 변환이 필요하게 된다. Primitive 타입은 실제 값을 가지고 있기 때문에 직렬화하지 않아도 된다. Serializable public interface Seria..
정규 표현식이란? 정규 표현식(regular expression)은 특정 규칙을 가진 문자열을 특정 패턴으로 사용하는 표현식을 의미합니다. Java, Python, Ruby, JavaScript 등 대부분의 프로그래밍 언어에서 정규 표현식을 라이브러리로 제공하고 있습니다. 정규 표현식 사용법 정규 표현식을 사용하기 위해선 사용되는 패턴에 대해서 알고 있어야 하는데요. 자주 사용되는 부분을 간략하게 정리해두었어요. 상세한 내용은 예전에 포스팅한 정규표현식 링크를 확인해 주세요! https://sasca37.tistory.com/99 [JAVA] - 정규표현식 regex 정규 표현식 Regular Expression 특정한 규칙을 가진 문자열의 집합 JDK 1.4부터 제공 검색 ^ : 문자열 시작부터 $ :..
https://www.acmicpc.net/problem/14890 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 성능 요약 메모리: 13116 KB, 시간: 120 ms 알고리즘 분류 구현(implementation) 문제 설명 크기가 N×N인 지도가 있다. 지도의 각 칸에는 그 곳의 높이가 적혀져 있다. 오늘은 이 지도에서 지나갈 수 있는 길이 몇 개 있는지 알아보려고 한다. 길이란 한 행 또는 한 열 전부를 나타내며, 한쪽 끝에서 다른쪽 끝까지 지나가는 것이다. 다음과 같은 N=6인 경우 지도를 살펴보자. 이때, 길은 총 2N..
Servlet 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램으로 자바 클래스의 일종 HttpServlet 를 상속받아 사용 JSP와 비슷한 점이 있지만, JSP가 HTML 문서 안에 자바 코드를 포함하고 있는 반면, 서블릿은 자바 코드 안에 HTML을 포함하고 있다. import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.ser..
Cookie & Session http protocol 특징 Http (Hyper Text Transfer Protocol) : 인터넷에서 데이터를 주고 받는 스펙 client가 서버에 요청 서버는 요청에 대한 처리를 한 후 클라이언트에 응답 응답 후 연결을 해제 (stateless) 지속적인 연결로 인한 자원낭비를 줄이기 위해 연결을 해제 클라이언트와 서버 간 연결 상태를 유지해야하는 경우 즉, 클라이언트 단위로 상태를 유지해야 하는 경우 세션과 쿠키가 사용된다. (stateless 약점을 보완) 쿠키 클라이언트의 텍스트로 저장되어 문자열만 저장된다. 서버에서 사용자의 컴퓨터에 저장하는 정보 파일 request 시 Request Header에 넣어 자동으로 서버에 전송 key 와 value로 구성되고 ..
문자열 패턴 매칭 라빈-카프 알고리즘 문자열 검색을 위해 해시 값 함수와 슬라이딩 윈도우 기법을 사용 문자열을 mod 연산을 통해 해쉬값 취환 문자를 일일이 비교하지만 해시를 사용하므로 최악은 O(MN) 이지만 선형적일수록 효율적이다. (단, 해쉬 충돌 여지가 있다.) 보이어 무어 알고리즘 문자열을 오른쪽에서 왼쪽으로 비교 끝 문자가 비교 문자랑 다르다면 끝 문자가 패턴에 포함되어 있는지 확인하고, 있다면 그 길이만큼 이동, 없다면 패턴의 길이 만큼 이동 최악은 O(MN) 이지만 최선은 O(N/M)이며 평균적으로 높은 속도를 가지는 알고리즘 skip 배열 skip 횟수를 저장한 배열 - 뒤로 갈 수 있는 거리 만큼 배열에 저장 패턴이 "rithm" 이라면 패턴의 길이는 5이다. a~z 중 r =4, i=..