본문 바로가기

개발자

[백준] 1715 카드 정렬하기 java 쉬운 풀이 ^^ + 자주 실수하는 반례 1. 문제 설명 📌문제 링크이번 문제도 조건이 직관적이어서 추가적인 설명 생략2. 접근 방식 🗃️KEY WORD: Greedy AlgorithmGreedy 알고리즘은 매 선택의 순간에 최선의 선택을 해나가는 것이 전체 문제에서 봤을 때도 최선이라고 가정하는 알고리즘이다. 해당 문제도 최소한의 비교를 위해서는 매번 카드 수가 적은 묶음을 2개 골라서 합치면서 나아가야 한다. 그렇기에 Greedy 알고리즘을 활용해야 한다. 여기서 주의해야할 점은 합친 카드 뭉치보다 카드 수가 더 작은 기존 카드 뭉치가 2개 이상 존재할 수 있다는 것이다. 이러한 경우가 문제의 예제에는 안 나와 있어서 간과하기 쉽다. 예를 들어보자.N = 6이고 각 카드 묶음의 카드 수는 [10, 15, 17, 19, 24, 25]라고 .. 더보기
[백준] 11047 실버4 동전0 java 풀이 1. 문제 설명 📌문제 링크설명이 직관적이라 추가 설명 생략2. 접근 방식 🗃️KEY WORD: Greedy Algorithm동전 수가 무한하기 때문에 Greedy 알고리즘을 적용하면 된다. Greedy 알고리즘은 매 순간 최적의 선택을 하는 것이다. 여기서 최적의 선택은 가능한한 큰 단위의 동전을 사용하여 동전 개수를 줄이는 것이다. 따라서 내림차순으로 동전 단위를 하나씩 훑으며, K원을 최대한 큰 단위의 동전으로 차감한다.내림차순으로 동전 조회만약 현재 조회 중인 동전으로 K원을 나눌 수 있다면? 나눈 몫만큼 동전을 사용 가능한 것임으로 몫을 답에 누적시킴K원은 (해당 동전의 단위 x 몫) 만큼 차감되었으므로, 나머지만큼만 남아있는 것이다. 따라서 K = K%단위로 갱신한다.1,2,3번을 K ==.. 더보기
Greedy 알고리즘 개념 설명 (java) 1. 그리디 알고리즘은 무엇인가요? 💡Greedy Algorithm은 매 선택의 순간마다 당시에 고를 수 있는 최선의 선택지를 골라가는 것이 전체에서 봤을 때 최선의 선택이라고 가정하는 알고리즘이다.예를 들어 다음과 같은 문제가 있다고 해보자.현재 A의 시점에서 고를 수 있는 선택지 중 C가 최단거리이다. 그러므로 C를 선택한다.C 시점에서 고를 수 있는 선택지 중 최단 거리로 갈 수 있는 노드는 G이다. 따라서 G를 선택한다. 두번의 선택 후 무조건 F를 비용 0으로 갈 수 있다고 할 때, 전체 노드는 다음과 같다.매 순간 갈 수 있는 최선의 선택지를 골랐더니 전체에서 봤을 때도 최선의 선택이었다. 이와 같이 매 순간의 최선 = 전체의 최선 이 성립할 때, 이러한 논리를 Greedy 알고리즘이라 한다.. 더보기
[기업 분석] 농협 정보 시스템은 뭐하는 곳인가요? 1. 조사한 내용 📖농협정보시스템: 농협 중앙회 지분 100%의 자회사로, 농협 계열사 및 기타 고객사를 위한 시스템 개발 및 유지보수를 담당하는 SI 업체진행 중인 사업: 금융 서비스 개발: 은행업무(Core Banking(여,수신, 신탁 외환)에 대한 계정계 시스템 구축), 증권/선물 업무, 카드 업무, 보험 업무스마트 팩토리: 종합 물류 시스템, 유통 ERP 서비스, 유통 SCM 서비스기타: 스마트 카드, NH 농협 생명 신보험시스템 개발 등 2. 내용의 수치화, 인사이트 나누기📊수치화할 자료가 없음3. 추가 조사한 내용 📋유니온 커뮤니티와 함께 농협은행 임직원 업무 시 활용할 사용자 인증 체계 고도화 작업을 진행기존에 패스워드 및 인증서 방식으로 이루어지던 업무 통합 로그인을 얼굴인증을 포함.. 더보기
[Java] JSON 직렬화의 모든것 1. JSON 이란 무엇인가요? 💡(1) 정의JSON이란 JavaScript Object Notation의 약자로 Javascript 객체 형태로 되어있는 데이터 교환 양식이다.JS 객체의 형태 : javascript 객체는 (key: value) 형태의 값들이 나열된 구조이다. java에서 HashMap과 유사하다고 볼 수 있다. js에서는 따로 변수에 대한 타입 선언이 필요 없기 때문에 객체 문법이 비교적 간편하다.(2) 특징a. 언어 독립적인 양식이다.분명 JS 객체 형태를 기반으로 만들어진 양식이지만, javascript 뿐만 아니라 대다수의 언어, 그 언어 기반 프레임워크에서 활용할 수 있다.b. 상태를 교환한다.JSON을 통해 주고받는 데이터란 특정 객체 혹은 값들의 상태이다. 기능을 의미하.. 더보기
[프로그래머스] Lv1 동영상 재생기 1. 문제 설명 📌문제 링크동영상 재생기의 작동을 구현하는 간단한 문제이다.skip: 현재 user의 위치가 오프닝 구간 안이면, 오프닝이 끝나는 지점으로 JUMP 한다.next: 10초 뒤로 위치를 움직인다. 만약 남은 동영상 시간이 10초 미만이면 동영상의 마지막 위치로 간다.prev: 10초 앞으로 위치를 움직인다. 만약에 현 위치가 10초 미만인 상태에서 prev를 누르면 동영상 맨 처음 위치로 움직인다. (첫 위치 0분 0초)2. 접근 방식 🗃️KEY WORD: SIMULATION그냥 구현 문제이다. 한 가지 까다로운 것은 입력이 String으로 주어지고, 그것을 int로 변환해 작업을 수행해야 하는 점과 답변은 또 String 형태로 변환하여 해야하는 점이다.(1) 첫 번째 접근 방식: C.. 더보기
[프로그래머스] Lv2 석유 시추 Java 쉬운 풀이🥰 1. 문제 설명 📌문제 링크문제 내용이 직관적이기 때문에 부가 설명은 생략하겠다.2. 접근 방식 🗃️KEY WORD: BFSoils라는 1차원 배열을 만든다. 해당 배열의 index 는 land의 열이고, value는 열 당 얻을 수 있는 석유의 양이다.land 전체에 대해서 이중 반복문으로 석유(1)이 있는 위치를 찾는다만약 석유를 찾는다면 해당 위치부터해서 연결된 석유 덩어리를 BFS로 찾는다.BFS로 해당 위치에서 시작해 석유 덩어리를 모두 찾았으면, 지금까지 거친 적 있는 열에 지금까지 찾은 석유량을 더한다.(예를 들어, 열을 1,2,3 거쳤고, 찾은 석유량이 7이면 oils[1] += 7, oils[2] += 7, oils[3] += 7 이 된다.)3. 코드 소개 🔎먼저 전체 코드를 보여주.. 더보기
[프로그래머스] Lv2 충돌 위험 찾기 java (접근 방식 힌트 + 세세한 코드 분석) 1. 문제 설명 📌문제 링크문제의 설명만 보면 이해하기가 어려운데, 밑의 시뮬레이터를 보면 문제에서 주어진 조건과 로봇의 작동원리는 이해할 만하다.하지만 헷갈리는 것이 있다면 바로, points와 routes의 의미 및 관계라고 할 수 있겠다.(1) 헷갈리는 것 바로 잡기points: 로봇이 방문해야하는 지점의 좌표를 배열 형태로 저장해놓았다.points[i]일 때, 이 i가 방문할 지점의 번호 이고, point[i]의 value가 각각 i란 지점의 행과 열 즉 좌표이다.routes; 로봇별로 방문해야할 지점을 순서대로 나열한 1차원 배열의 묶음이다.routes[i]의 i는 로봇의 번호이고, routes[i]에는 로봇이 방문해야할 지점의 번호가 순서대로 저장되어 있다.예를 들어, routes[2] = .. 더보기