전체 글 108

var vs let vs const

var 변수의 중복 선언이 가능합니다. var num = 1; var num = 10; //같은 이름의 num변수 중복 선언 가능 중복된 변수 이름의 위험성 =>협업시 중복된 변수의 이름을 서로 다른 개발자가 사용한다면 의도치 않은 실행결과가 나타날 수 있습니다. let 변수의 중복 선언이 불가능하고 변수에 다른 값을 재할당하는 것은 가능합니다. let num=10; num=5; //재할당 가능 let num=20;//중복선언 불가 =>조금 더 안전하게 변수의 이름을 선언할 수 있습니다. const 변수의 중복 선언이 불가능합니다. 변수에 할당된 데이터를 변경할 수 없습니다. => const는 상수로 취급됩니다. const num=10; num=20; //num값 변경이 불가능

Javascript 2022.01.11

[Spring] 의존관계 자동 주입(2/2) - @Autowired, @Qualifier, @Primary

의존성 주입을 위해 빈을 주입할 때 조회된 빈이 2개 이상일 경우가 있습니다. 다음과 같은 경우입니다. @Autowired는 빈의 타입으로 빈을 조회하는데, @Component public class FixDiscountPolicy implements Discountpolicy{} @Component public class RateDiscountPolicy implements DiscountPolicy {} 위와같이 DiscountPolicy 인터페이스를 FixDiscountPolicy와 RateDiscountPolicy가 구현하고 있을 경우 @Autowired private DiscountPolicy discountPolicy DiscountPolicy 타입으로 빈을 주입받으려고 하면 NoUniqueB..

[Python] [프로그래머스] - 스킬트리

문제설명 skill_trees 리스트에 있는 문자열의 알파벳 순서가 skill 문자열의 순서대로 이루어져있는지 판단하고 그 갯수를 리턴하는 문제입니다. 입출력 예를 봐도 알 수 있지만, 여기서 주의할 점은 skill_trees의 "BDA"는 불가능한 스킬 트리입니다. B와 D의 순서는 맞았지만 B를 위해 선행되어야 하는 C가 없기 때문입니다. 그렇지만 "CBA"는 가능합니다. skill의 문자열 "CBD"와 같이 "CBA"는 C -> B로 스킬 순서가 되므로 아무 문제가 없고 D는 없지만 순서가 중요하지 모든 skill의 문자열이 포함되어야 하는 것은 아닙니다. 접근방법 skill 문자열의 가장 마지막 문자부터 처음 문자까지 포문을 돌면서 유저의 문자열에 해당 문자열이 있는지 체크하고 now_idx를 갱..

[Python] Map함수, Filter함수

map map 함수의 원형은 다음과 같습니다. map(function, iterable) function : iterable에 대해 수행할 함수 iterable : 반복 가능한 자료형 map 함수는 iterable의 각 원소에 대해 function을 수행하는 함수입니다. 첫 번째 인자 function에는 람다함수도 쓸 수 있습니다. map 함수의 반환 값은 map 객체이기 때문에 list 또는 tuple로 형 변환시켜주어야 합니다. map함수 예제 list(map(int,[1.1, 2.0, 3.3, 4.5])) 결과 [1, 2, 3, 4] map + 람다 함수 예제 map의 첫번째 인자로 람다함수를 쓰는 예제입니다. list(map(lambda x: x * 10, [1,2,3,4,5]))) 결과 [10,..

python 2021.10.02

[Python] [프로그래머스] - 구명보트

문제 설명 무인도에 갇힌 사람을 2명씩 구명보트로 구출할 수 있는데 두 명의 몸무게 합이 구명보트가 최대로 구조할 수 있는 무게 이하여야 한다는 제한이 있을 때 필요한 구명보트의 갯수를 구하는 간단한 문제입니다. 접근 방법 처음에는 간단히 몸무게 순으로 오름차순 정렬을 하고 앞사람부터 둘씩 짝지어서 구명보트 최대 무게 제한 이하의 몸무게라면 구출을 하는 방향으로 생각했습니다. 예를들어 people = [50, 50, 70, 80] 이면 50kg인 두명을 먼저 구출하고 그다음 차례로 70, 80kg인 사람을 구출하는거죠 But!! 이렇게 하면 people = [5,5,20,20,80,80] 일 경우 구명보트는 4개가 필요하지만 실제로는 3개로도 충분히 구출할 수 있습니다. 20+80을 해서 100kg를 맞..

[java 8] 함수형 인터페이스와 람다 표현식 소개

함수형 인터페이스 추상 메소드를 하나만 가지고 있는 인터페이스입니다. 함수형 인터페이스를 정의하기 위해 @FunctionalInterface 애노테이션을 사용할 수 있습니다. 이 애노테이션은 자바에서 제공해줍니다. java 8부터 인터페이스이지만 메서드안에 구현체가 있을 수 있고 default 메서드를 추가할 수도 있게 변경됐습니다. - 함수형 인터페이스 public interface RunSomething { void doIt(); //구현부가 있는 메서드 static void printName(){ System.out.println("dayeon"); } //디폴트 메서드 default void printAge(){ System.out.println("20"); } } RunSomething 인터페이..

Java 2021.09.06

[Spring] 의존관계 자동 주입 - 생성자 주입을 선택하자!

의존관계 의존관계 주입에는 크게 4가지가 있습니다. 생성자 주입 수정자 주입 필드 주입 일반 메서드 주입 생성자 주입 생성자 호출 시점에 1번만 호출되어 불변, 필수 의존관계에 사용됩니다. @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memb..

[Python][프로그래머스] - 거리두기 확인하기

입출력 예 places result [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] 내풀이 from itertools import combinations def solution(places): answer = [] p_collect=[] for pan in places: p_collect = [] for r ..

[python][프로그래머스] - 주식가격

내 풀이 def solution(prices): answer = [] prices_len = len(prices) answer.append(0) for i in range(prices_len-2,-1,-1): for j in range(i+1,prices_len): price_down = False if prices[i] > prices[j]: #가격이 떨어짐 answer.append(j-i) price_down = True break if price_down == False : answer.append(j-i) return list(reversed(answer)) 예제 처럼 [1,2,3,2,3]이 들어왔을 때 마지막 주식가격(3)은 가격이 떨어지는 시간이 0초 이므로 일단 0을 추가해주고 시작했습니다...