반응형

분류 전체보기 316

[프로그래머스, 자바] Level2:전력망을 둘로 나누기 (위클리 챌린지 9주차)

문제분석 목표: 어떤 간선을 잘랐을때, 나누어진 두개의 전력망의 차이가 최소가되는 경우구하기 간선을 잘랐을때, 두개의 전력망의 차이가 최소가 되는경우를 구해야하기때문에 일단, 간선을 하나씩은 다 잘라봐야한다. (완전탐색) 간선을 자르는행위는, wires간선에 원소를 없애버려야한다. 하지만, 입력값을 건드릴수는 없으니... wires배열의 복사본으로 List를 선언했다. BFS탐색을위해, Queue를 선언한다. (이유: 간선이 연결되어있는걸 탐색하기위해) 예시를 하나 들어보자면, wires간선에 [4,7]을 자르기로했다. 그러면, List=[[1,3],[2,3],[3,4],[4,5],[4,6],[4,7],[7,8],[7,9]] 이 되어야한다. 자르고나면, 왼쪽이든 오른쪽이든 갯수를 세어야한다. 본인은 부모..

자바 API : 큐(Queue) ,Deque사용법

스택(Stack)과 반대의 속성을 가진 배열입니다. https://taehoung0102.tistory.com/entry/%EC%9E%90%EB%B0%94-API-%EC%8A%A4%ED%83%9DStack-%EC%82%AC%EC%9A%A9%EB%B2%95 자바 API : 스택(Stack) 사용법 스택은 가장 먼저들어온것을 나중에 처리하고, 가장 늦게들어온것을 먼저 처리합니다. 즉, (LIFO - Last In First Out) 원리입니다. 예제로, 접시쌓기라고 생각하시면 매우편합니다. 저희가 접시를 설 taehoung0102.tistory.com 큐는 먼저 집어 넣은 데이터가 먼저 나오는 FIFO(First In First Out)구조 를 뜻합니다. 실생활로 예제를 들어본다면... 손님들이 주문을 한 ..

자바/API 2021.10.04

자바 API : 스택(Stack) 사용법

스택은 가장 먼저들어온것을 나중에 처리하고, 가장 늦게들어온것을 먼저 처리합니다. 즉, (LIFO - Last In First Out) 원리입니다. 예제로, 접시쌓기라고 생각하시면 매우편합니다. 저희가 접시를 설거지할때 맨윗접시부터 닦으면서 맨 처음들어온 마지막접시를 나중에 닦는것처럼요. 스택의 선언: 1 Stack stack = new Stack(); cs push(): 스택에 데이터추가 pop(): 가장 최근에 넣은값을 삭제후 반환 peek(): 가장 최근에 넣은값을 반환 (삭제 X) empty(): 스택이 비어있는가? 반환(boolean : 참이면 true, 원소가 있으면 fasle) search(data): data를 보관한 순번을 반환 (1부터 시작) clear(): 스택의 내용 전부 삭제 si..

자바/API 2021.10.04

스프링(Spring) 빈 수동등록, 자동등록 하는법

빈을 등록하는데는 크게, 수동등록 (@Bean)과 자동등록(@Component, @Autowired)가 있다. 먼저 수동등록 하는법을 알아보겠다. 수동등록은, @Configuration주석이 있는 class 안에다 @Bean주석이 들어간 메소드를 넣으면 된다. 사용자가 직접 Bean을 넣어주는거니 스프링컨테이너의 Bean수동등록이라고 한다. 하지만, 수동등록을 하나씩 넣다보면, 몇개 실수로 누락하기도 하고, 일일이 찾아서 받아쓰기도 번거롭다. 이런 불편한점을 없애기위해 탄생한 @Component와 @Autowired을 이용한 자동 빈 등록이다. @Configuration과 @ComponentScan으로만 사용하면, 자동등록이 끝난다. 자동등록을하려면, 넣을 빈을 담아야하는데, 자동등록에서 빈을 넣기위해서..

[프로그래머스,자바] Level1: 최소직사각형 (위클리 8주차)

문제분석 목표: 모든 명함을 넣을수있는 가장 작은 지갑 만들기 특수규칙: 명함은 회전할수있다. 전 이 문제를.. Set과 3차 반복문으로 40줄넘겨가면서 삽질하면서 풀었습니다... 가로와 세로에대한 틀에 너무 집중하시면 자칫하다 개고생합니다(하드모드). 가로: 두 변중에서 긴 부분 세로: 두 변중에서 작은 부분 이렇게 생각하시면 놀랍게도 정말 쉽게 풀리는 문제입니다. 그림으로 보실까요? 가로를 두 변중에서 가장 긴 부분으로 설정합니다. (모든 명함을 제일 긴부분으로 눕히는거죠) 세로를 두 변중에서 가장 작은 부분으로 설정합니다. 그후, 가로와 세로의 길이가 모두 들어맞게, Max(가로)와 Max(세로)를 설정하면 정말 쉽게풀립니다. 문제풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15..

스프링(Spring): 싱글톤(Singleton) 패턴

이번 포스팅은 디자인패턴 중 하나인 싱글톤 패턴에대해 다뤄보겠습니다. 싱글톤 패턴(Singleton Pattern)은 무엇일까? 위키피디아: 싱글턴 패턴(Singleton pattern)을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 이와 같은 디자인 유형을 싱글턴 패턴이라고 한다. 즉! 여러사용자가 매번 객체를 호출할때 매번 객체를 생성하지말고, 이미 생성된 객체 하나를 재사용 하는 것입니다. 글로 설명하는것보단 코드로 한번 봐볼까요? 우선 아주 간단한 클래스 Menu를 설정하겠습니다. 입력값으로 메뉴 이름만 받도록 설정했습니다. 우선 싱글톤 없이 객체를 생성해보겠습니다. 자장면이라는 이름이..

안드로이드스튜디오: 다양한 위젯 활용하기(계산기앱)

안드로이드 스튜디오에는 다양한 위젯이있다 EditText, Radio버튼,그룹 ,체크박스,토글,스위치 등등.. 모든 기능을 다루기엔 너무 많고 그중에서 몇개의 위젯을 활용하여 간단한 계산기 앱을 만들봅시다. XML(위젯 생성) 위젯을 생성할때, 디자인탭에있는 Palette를 적극 활용합시다 사용자에게 값을 입력받을 EditText를 2개 생성합니다. PlainText가 EditText입니다. Edit Text의 위치조정 infer constraints를 해주고, placeholer로 값1, 값2를 입력합니다. 안드로이드에선 android:hint 메소드를 사용하여 나타낼 수 있습니다. 추가적으로 4개의 사칙연산을 해줄 버튼을 생성합니다. android:text로 텍스트를 더하기, 빼기 ,곱하기, 나누기를..

[프로그래머스 ,MYSQL] Level4: 헤비 유저가 소유한 장소

문제분석 목표:헤비유저가 등록한 공간의 정보를 아이디순으로 조회하기 문제풀이 첫번째 접근 select * from places where host_id=헤비유저 order by id 헤비유저가 등록한 공간의 정보를 아이디순으로 조회하는걸 코드로 번역하면 이렇다. 두번째 접근 헤비유저인 사람들을 구하면된다. select host_id from places groub by host_id having count(host_id)>=2 헤비유저는 host_id를 그룹화해서, host_id의 갯수가 2개이상이면 헤비유저다. 헤비유저는 여러명이니, where host_id in ()으로 바꾼다. 1 2 3 4 5 6 7 8 9 10 select * from places where host_id in ( SELECT ..

알고리즘/MYSQL 2021.09.29

[프로그래머스,자바] Level2 : 타겟 넘버

문제분석 여러개의 숫자가있는 배열 numbers와 target이 입력으로 주어집니다. 목표: numbers의 숫자를 모두활용하여, + - 만으로 target을 만드는 경우의수를 세기 모든 숫자를 사칙연산중 +,-만을 활용하여 target이 나오는경우를 세주면된다. 사칙연산중 2개의 연산만 고려하면되니, 재귀함수를 활용하면 간단하게 풀수있다. 문제풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 class Solution { boolean[] visited; int cnt=0; public int solution(int[] numbers, int target) { int answe..

반응형