전체 글 121

[프로그래머스] 뒤에 있는 큰 수 찾기

문제설명 알고리즘 1. 수를 stack에 입력 받는다 first는 숫자, second는 인덱스 값이 된다 2. stack이 비어있지 않다면, 맨 위의값을 꺼내어 현재 숫자와 비교하여 크거나 같으면 반복문을 빠져나가고 그렇지 않으면 stack에서 뺀다 3. 반복문을 나온 상태이면 현재 수 값과 인덱스를 저장한다 코드 #include #include #include using namespace std; vector solution(vector numbers) { vector answer(numbers.size(), -1); stack st; for(int i =0 ; i< numbers.size() ; i++){ while(!st.empty()){ pair top = st.top(); if(top.first..

Algorithm 2023.03.05

[프로그래머스] 가장 가까운 같은 글자

문제설명 알고리즘 1. 알파벳과 그 인덱스를 map 에 저장한다 2. map에서 해당 key를 조회하고 있으면 그 value와 문자열을 순회하는 index값을 빼어 결과값에 저장 3. key가 없는 경우 결과값에 -1 저장, 그리고 map에 key값과 현재 index저장 코드 #include #include #include using namespace std; vector solution(string s) { vector answer; map m; for(int i=0; i< s.size(); i++){ char temp = s[i]; if(m.count(temp)){//해당 알파벳이 있으면 answer.push_back(i-m[temp]); //제일 가까운 위치 구해서 거리 저장 m[temp] = i;..

Algorithm 2023.02.24

[프로그래머스] 귤 고르기

문제설명 알고리즘 1. 귤의 크기 별 몇 개 존재하는 지 카운트 -> (key, value) 형태인 map이 가장 적절 2. MAP에 넣은 뒤, 귤의 갯수 기준으로 내림차순 정렬 3. 벡터로 변환하여 벡터 순회하여 k 개에서 최대 귤 수 부터 k 값 감소 시키기 & 결과 값 증가 코드 #include #include #include #include #include using namespace std; bool cmp (const pair &a, const pair &b){ if(a.second == b.second) return a.first > b.first; return a.second > b.second; } int solution(int k, vector tangerine) { int answer..

Algorithm 2023.02.22

[프로그래머스] 명예의 전당(1)

문제설명 알고리즘 1. 점수 값을 조회하면서 다른 벡터에 값을 넣는다 2. 내림차순으로 정렬한다 3. K번째가 되기전까지는 가장 큰 인덱스 값이 최하 값이고, K번째까지 벡터에 들어왔을 경우 K-1번째가 최하값이므로 저장한다 코드 #include #include #include #include using namespace std; vector solution(int k, vector score) { vector answer; vector temp; for(int i=0; i< score.size(); i++){ int current = score[i]; temp.push_back(current); sort(temp.rbegin(), temp.rend()); // 내림차순 정렬 if(i

Algorithm 2023.02.22

[프로그래머스] 과일장수

문제설명 해당 문제는 주어진 값에서 얻을 수 있는 최대 가치를 계산하는 문제이다 상자에 과일의 가치가 주어지면 한 상자에 들어갈 수 있는 과일의 수와 최대 과일의 가치 값을 입력받는다 알고리즘 1. 과일의 가치를 내림차순으로 정렬한다 2. 팔 수 있는 최대의 상자 수 만큼 반복문을 돈다(남는 과일은 버리기 때문에 완성되는 상자 기준으로 계산한다) 3. 각 상자마다 가장 가치가 낮은 것이 얻을 수 있는 값이기 때문에 각 상자마다 제일 가치가 낮은 인덱스에 접근해서 결과 값을 계산한다 코드 #include #include #include #include using namespace std; int solution(int k, int m, vector score) { int answer = 0; //내림차순 ..

Algorithm 2022.11.14

[Java] Generics

1. 정의 - 타입을 일반화 하는 것을 의미 - 클래스 내부에서 정하는 것이 아닌 사용자 호출에 의해 타입이 지정되는 것 - class / interface / method 등의 타입을 파라미터로 사용할 수 있게 해주는 역할 - Java 5 부터 추가된 개념 ex) List list = new ArrayList(); // 는 diamond라고도 하고 제네릭 표현식임 2. 사용하는 이유 1) 재사용성 증가 : 여러 타입의 파라미터를 삽입해 객체를 생성할 수 있기 때문에 코드를 간결하게 하고, 재사용성을 높인다 2) 컴파일 시 타입 에러 발견 가능 : 컴파일시 잘못 사용되는 문제점을 발견할 수 있기 때문에 런타임 단계에서 발견 될 가능성을 방지한다 3) 컴파일러가 타입 변환 수행: 컴파일 단계에서 타입 캐스..

Language/Java 2022.10.26

[Kotlin] Null Safety

Nullable types and non-null types 코틀린은 null 참조 위험에 대비한다 예를 들어, Java언어의 경우에는 null 참조가 NullPointerException(NPE)를 불러일으킨다 1. Regular variable 기본적인 변수 선언 방식 var a : String = "abc" //non-null 하게 초기화 된 변수 a = null //이러한 경우 컴파일 에러가 발생함 ////////// var b: String ? = "abc" // it can be set to null b= null //ok print(b) //null이 출력됨 ////////// val l = a.length //a는 non-null하므로 가능 val l = b.length //b는 null ..

Language/Kotlin 2022.09.13