전체 글

람다(Lambda) - 현대적 프로그래밍 기법 = 객체지향 프로그래밍 + 함수적 프로그래밍 - 자바 8버전부터 함수적 프로그래밍 지원 스트림(Stream) 1. 람다식으로 요소 처리를 제공 2. 내부 반복자를 사용하므로 병렬처리가 쉽다. -> 컬랙션 내부에서 객체를 반복시킬 것인가는 컬렉션에게 맡기고, 개발자는 객체 처리 코드에만 집중할 수 있다. 스트림은 '중간처리' 와 '최종처리'를 할 수 있다. 람다식과 스트림 import java.util.*; import java.util.stream.Stream; public class StreamEx01 { public static void main(String[] args) { List list = (List) Arrays.asList(10,20,30,40..
HTTP(Hypertext Transfer Protocol)란? 인터넷에서 정보를 주고받는데 사용되는 통신 규약 (protocol)이다. 간단히 말해, 웹 브라우저와 웹 서버 사이에 데이터를 주고받는 방법을 정의 하는 규칙이다. 클라이언트(Client) 클라이언트는 정보를 요청하는 사용자입니다. 보통은 웹 브라우저가 클라 이언트 역할을 합니다. 사용자가 웹 브라우저를 통해 웹 페이지를 요청하면, 이 요청이 HTTP 메시지로 웹 서버로 전송됩니다. 서버(Server) 서버는 클라이언트 요청에 응답하여 정보를 제공하는 컴퓨터이다. 웹 서버는 클라이언트의 요청을 받아 해당하는 웹 페이지나 데이터를 전송한다. 쉽게 생각하면 클라이언프는 프런트이고, 서버는 백이다. HTTP 메시지(HTTP Message) HTT..
스프링의 탄생배경 EJB(Enterprise Java Bean) 이란? JB에 해당하는 Java Bean이란 자바 객체를 재사용 가능하게 컴포넌트화 시킬 수 있는 코딩 방침을 정의한 것을 의미합니다. 즉, EJB는 컴포넌트(빈 혹은 객체)들을 관리하는 컨테이너 라고 이해할 수 있습니다. EJB 스펙을 지키면서 구현하면 실제 로직보다 EJB 컨테이너를 사용하기 위한 코드들이 많아지는 결과를 발생시켰고, 객체간 의존성을 해결하기 위해서 컨테이너를 개발했는데, 이것이 스프링의 시작입니다. Spring이란? 스프링은 '여러 기술들의 집합체'로 정의 할 수 있는데 그러한 기술들에는 스프링 프레임워크, 스프링부트, 스프링 데이터 등등.. 이 있습니다. 스프링부트 - 스프링 프레임워크 기반 프로젝트를 복잡한 설정없이..
문제의 핵심은 버블정렬의 이중for문에서 안쪽 for문 전체를 돌 때 swap이 일어나지 않았을때의 횟수를 출력하는 것이다. 하지만 버블정렬을 이용하여 풀면 시간을 초과할 수 있어서 다른 아이디어를 사용해야합니다. 풀이 안쪽 루프는 1에서 n - j까지, 즉 왼쪽에서 오른쪽으로 이동하면서 swap을 수행한다. 이는 특정 데이터가 안쪽 루프에서 swap의 왼쪽으로 이동할 수 있는 최대 거리가 1이라는 뜻이다. 즉, 데이터의 정렬 전 index와 정렬 후 index를 비교해 왼쪽으로 가장 많이 이동한 값을 찾으면 이 문제를 해결할 수 있다. 마지막에 정렬이 다 완료되어 swap이 일어나지 않는 반복문이 실행되는 것을 감안해 최댓값에 1을 더합니다. import java.io.*; import java.uti..
풀이 슬라이딩 윈도우를 덱으로 구현하여 정렬할 수 있다. 처음 인덱스부터 덱에 넣어가면서 만약 들어온 새로운 값이 덱의 마지막 인덱스와 비교했을때 덱의 마지막인덱스의 값 > 덱에 새로 들어온 값일 경우 마지막 인덱스의 값을 삭제한다. 또한 예시처럼 L을 3처럼 잡고할 경우 인덱스가 3을 넘어가버리면 처음 인덱스는 제거해줘야한다. 똑같은 방식으로 계속 해가면 된다. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); B..
문제는 다음과 같다. 풀이 숫자 3은 1과2로 이루어지고 4는 3과1 ... 10은 1과9 로 합쳐지듯이 다른 수 두개의 합으로 나타낼 수 있다면 그 수를 좋은 수 라고하는 것이다. 이 문제를 풀기 위해선 정렬과 투 포인터를 이용하여 해결하면 된다. for(k를 0부터 N까지 반복) { 변수 초기화하기(찾고자 하는 값 find, 포인터 i, 포인터 j) while(i < j) { if(A[i] + A[j] == 찾고자 하는 값) 두포인터 i,j가 k가 아닐때 결괏값에 반영 및 while 문 종료 두 포인터 i,j가 k가 맞을때 포인터 변경 및 계속 수행하기 else if(A[i] + A[j] < 찾고자 하는 값) 포인터 i 증가 else 포인터 j 감소 } } 좋은수의 개수 출력하기 import java..
문제는 다음과 같다. 문제의 핵심은 특정 구간 수들의 나머지 연산을 더해 나머지 연산을 한 값과 이 구간 합의 나머지 연산을 한 값을 동일하다. 구간 합 배열을 이용한 S[j] - S[i]는 원본 배열의 i+1 부터 j까지의 구간 합이다. S[j] % M의 값이 같다면 (S[j] - S[i]) % M 은 0이다. 즉, 구간 합 배열의 원소를 M으로 나눈 나머지로 업데이트하고 S[j]와 S[i]가 같은 (i,j)쌍을 찾으면 원본 배열에서 i+1부터 j까지의 구간 합이 M으로 나누어 떨어진다. import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int..
자율주행 해커톤 2024. 2.1~ 2.2 까지 진행된 aws deepracer 자율주행차 해커톤대회에 다녀왔다. 맨처음에는 버츄얼레이싱을 위한 파라미터들값만 잘 달릴 수 있는 값을 최대한 확인하면서 조정해주었다. 그 결과 10등중에 3등했다. 전체적으로 마지막 오프라인 레이싱에서는 2등을해서 전체 2등을하는 업적을 이루었다 !
말동말동현
동현s토리