본문 바로가기

분류 전체보기

(370)
[BOJ] 2805번 나무 자르기 (C++) https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net #include #include using namespace std; int main() { long long n, m; cin >> n >> m; vector v(n); long long min = 0, max = 0; long long result = 0; for(int i = 0; i > v[i]; if(v[i] > max)..
[BOJ] 16173번 점프왕 쩰리 (Small) (C++) https://www.acmicpc.net/problem/16173 16173번: 점프왕 쩰리 (Small) 쩰리는 맨 왼쪽 위의 칸에서 출발해 (행, 열)로 나타낸 좌표계로, (1, 1) -> (2, 1) -> (3, 1) -> (3, 3)으로 이동해 게임에서 승리할 수 있다. www.acmicpc.net #include #include using namespace std; int n; int arr[3][3]; string bfs(){ queue q; q.push({0, 0}); while(!q.empty()){ int x = q.front().first; int y = q.front().second; int step = arr[x][y]; q.pop(); if(step == -1) return "H..
[Programmers] 로또의 최고 순위와 최저 순위 (C++) https://school.programmers.co.kr/learn/courses/30/lessons/77484 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include #include using namespace std; vector solution(vector lottos, vector win_nums) { vector answer; int cnt1 = 0, cnt2 = 0; for(int i = 0; i < 6; i++){ if(find(win_nums.begin(), win_nums.end(), lottos[i]) != wi..
[Java] Optional<T> 클래스 Optional 개념 Java8부터 지원하는 Optional 클래스는 null이 올 수 있는 값을 감싸는 Wrapper 클래스로, NPE(Null Pointer Exception)이 발생하지 않도록 도와준다. * NPE(Null Pointer Exception)이란? 개발할 때 가장 많이 발생하는 예외 중 하나이다. NPE를 피하려면 null 여부를 검사해야 하는데, null 검사를 해야하는 변수가 많은 경우 코드가 복잡해지고 번거롭다. 그래서 null 대신 초기값을 사용하기를 권장하기도 한다. List names = getNames(); names.sort(); // names가 null이라면 NPE 발생 List names = getNames(); // NPE를 방지하기 위해 null 검사 해야함 i..
[Java] 메소드 레퍼런스(Method reference, ::의 의미) 메소드 레퍼런스란? lambda 표현식을 더 간단하게 표현하는 방법이다. 예를 들어, 다음은 람다식으로 Hello를 출력하는 코드이다. (Consumer는 어떤 객체를 입력받아 void를 출력시키는 함수형 인터페이스이다.) Consumer func = text -> System.out.println(text); func.accept("Hello"); 위의 람다식은 다음과 같이 System.out::println이라는 메소드 레퍼런스로 표현할 수 있다. Consumer func = System.out::println; func.accept("Hello"); 메소드 레퍼런스는 ClassName::MethodName 형식으로 입력한다. 메소드를 호출하는 것이지만 괄호는 생략한다. 위의 예제처럼, 메소드 레퍼런..
[Java] Stream API - filter, map, flatMap Stream API란? java8부터 추가된 API로 함수형 인터페이스(람다식)를 적용하여 컬렉션과 같은 저장요소를 반복적으로 처리할 수 있는 기능이다. 1. filter filter는 말 그대로 특정조건으로 스트림의 컨텐츠를 필터링하는 것이다. 함수에 filter(조건)으로 조건을 넣으면 된다. 아래 코드를 보면 c로 시작하는 문자열만 필터링하도록 조건을 설정하였고 이 조건에 해당하는 문자의 stream이 리턴되었다. List list = Arrays.asList("a1", "a2", "b1", "b2", "c2", "c1", "c3"); Stream stream1 = list.stream(); Stream filtered = stream1.filer(s -> s.startsWith("c")); fil..
[Java] 람다식(lambda expression) 람다식이란? 람다 함수는 java8부터 추가된 기능으로 익명 객체를 생성하기 위한 표현식을 말한다. 람다식 이전 public interface Goods{ public void doSome(); } public class Computer implements Goods{ @Override public void doSome() { System.out.println("do Operation!"); } } public class Main{ public static void main(String[] args){ Goods com = new Computer(); com.doSome(); } } 기존 자바에서 interface를 이용해 다형성을 제공하기 위해서는 interface를 만들고, 그것을 구현한 class를..
[Java] 익명 객체(anonymous object) 익명 객체란? 클래스를 정의하지 않고 객체를 정의하는 방법 -> 1회용 클래스 사용 -> 재사용 불가능한 클래스 (객체를 1번 만드는 용도) 이벤트 객체, 스레드 객체, 람다식, 스트림 등에서 사용 1. 익명 자식 객체 생성 부모 타입으로 필드/변수를 선언하고, 자식 객체를 초기값으로 대입한다고 하자. 이 때 해야할 일은 부모클래스를 상속해서 자식 클래스 선언 new 연산자를 이용해 자식 객체 생성 생성한 후 필드/로컬 변수에 대입 class Child extends Parent{ } class A{ Parent field = new Child(); void method(){ Parent local = new Child(); } } 하지만 자식 클래스가 재사용되지 않고, 단지 필드/변수의 초기값으로만 사..