본문 바로가기

분류 전체보기

프로그래머스 - 거리두기 확인 (카카오 2021 인턴) import math def check(place, p1,p2) : y1, x1 = p1 y2, x2 = p2 if x1 == x2 : if y2 - y1 > 2 : return True if place[y2-1][x1] == 'X' : return True return False elif y1 == y2 : if x2 - x1 > 2 : return True elif place[y1][x2-1] == 'X' : return True return False else : if abs(x2-x1) + y2-y1 > 2: return True if place[y1][x2] == 'X' and place[y2][x1] == 'X' : return True return False def solution(place.. 더보기
프로그래머스 - 테두리 회전하기 2차원 배열 다루는 문제인데,, 의도에 맞게 푼건진 모르겠다. 무슨 의도로 낸 문제일까... 딱히 어려울 거 없이 한큐에 달린 문제 def rotate(q, arr) : y1, x1, y2, x2 = q y1, x1, y2, x2 = y1-1, x1-1, y2-1, x2-1 tmp = arr[y1+1][x1] minimum = tmp for i in range(x1, x2+1) : tmp, arr[y1][i] = arr[y1][i], tmp minimum = minimum if minimum < tmp else tmp for i in range(y1+1, y2+1) : tmp, arr[i][x2] = arr[i][x2], tmp minimum = minimum if minimum < tmp else tm.. 더보기
티스토리 코드블럭 이쁘게 넣기2 html 편집으로 들어간다 티스토리에서 코드블럭을 넣으면 pre 태그 밑에 code 태그로 들어간다. 그래서 code 태그를 스타일링 해주는 코드를 넣는다. 넣기 전과 후를 비교해보자면 넣기 전 넣은 후 줄간격이랑 폰트 크기는 취향껏! 더보기
웹팩 간단 정리 웹팩 왜 쓰나? 보통 자바스크립트 코드를 html에 넣을땐 태그를 이용한다. 만약 file.js에서 a 라는 변수를 선언했으면 a 변수는 어디서든 접근 가능하게 된다. 그렇기 때문에 전역 스코프가 오염되지 않도록 하기 위해서는 자바스크립트 모듈 시스템을 사용해야한다. 일부 브라우저에서는 script 태그에 type="module" 이라고 줌으로써 모듈 시스템을 이용한다. type="module" 이라고 해줌으로써 브라우저가 main.js는 모듈 시스템을 이용한다고 알게끔해주고 이제 main.js 에서는 import 해오는 것이 가능하게 된다. 참고로 export default가 아닌 그냥 export 들은 { } 로 감싸야한다. nodejs 에서는 require과 exports로 가능하고 ES2015에서.. 더보기
릿코드, 프로그래머스 - 소수찾기 from itertools import permutations import math def isPrime(num) : if num ==2 : return True until = math.ceil(math.sqrt(num)) for i in range(2, until+1) : if num % i == 0 : return False print(num) return True def solution(numbers): answer = 0 comb = set() myLen = len(numbers) for i in range(1, 2**myLen) : a = f'{int(bin(i)[2:]):0{myLen}}' tmp = [] for idx, i in enumerate(a): if i == '1': tmp.appe.. 더보기
스프링 빈 스코프 싱글톤 스코프 : 스프링 컨테이너가 생성되고 내려갈 때까지 같은 객체 프로토타입 스코프 : 매번 요청이 올 때마다 스프링 컨테이너가 새로 생성, 의존관계 주입, 초기화까지 해주고 전달함 프로토타입은 말 그대로 스프링 컨테이너 입장에서는 요청이 오면 만들어서 던져주는 것이기 때문에 관리는 전적으로 클라이언트가 해야한다. 그런데 만약 싱글톤 빈이 프로토타입을 자동주입 받게 되면? 싱글톤 빈은 계속해서 같은 프로토타입의 참조를 들고 있을 것이니 프로토타입이라해도 싱글톤으로 자동주입 들어가는 순간 싱글톤이나 다름 없게 된다. 이를 해결하기 위한 방법은 싱글톤에서 프로토타입 객체를 가져와야할때 매번 스프링 컨테이너에 조회해야 한다. 이를 간단하게 하기 위한 것이 ObjectProvider이다. @Scope("si.. 더보기
스프링 빈 등록 총정리 팩토리 메소드 방식 스프링 빈 등록시의 팩토리 메소드 방식은 아래와 같이 Configuration 클래스를 만들어서 안에 있는 메소드들에 Bean 어노테이션을 달아서 등록하는 방법이다. ( 수동적인 방법 ) @Configuration public class AppConfig { @Bean public MemoryMemeberRepository memberRepository() { return new MemoryMemeberRepository(); } @Bean public MemberService memberService() { return new MemberServiceImple(memberRepository()); } @Bean public OrderService orderService() { ret.. 더보기
스프링 설정 - Xml 형식 항상 자바코드로 작성하고 @Configuration 달면 간단하게 설정이 끝났는데 xml 형식으로 설정하는 법도 알아야 한다고 해서 나름의 삽질 끝에 정리해봤다. @Configuration public class AppConfig { @Bean public MemoryMemeberRepository memberRepository() { return new MemoryMemeberRepository(); } @Bean public MemberService memberService() { return new MemberServiceImple(memberRepository()); } @Bean public OrderService orderService() { return new OrderServiceImpl(.. 더보기
프로그래머스 - 징검다리 (바위 부수기) def solution(distance, rocks, n): rocks.sort() minDistance, maxDistance = 1, distance current = (minDistance + maxDistance) // 2 while True : cnt = 0 pre = 0 for idx in range(len(rocks)): if rocks[idx] - pre n : break else : pre = rocks[idx] continue if cnt 더보기
릿코드 5 - Longest Palindromic Substring class Solution: def longestPalindrome(self, s: str) -> str: answer = [0, 0] for i in range(1, len(s)-1): l, r = i, i while True : if s[l] == s[r]: l, r = l - 1, r + 1 if l == -1 or r == len(s): l, r = l + 1, r - 1 break else : l, r = l + 1, r - 1 break if answer[1] - answer[0] < r - l: answer = [l, r] for i in range(0, len(s) - 1): if s[i] == s[i + 1]: l, r = i, i + 1 while True : if s[l] == s[r.. 더보기