본문 바로가기

프로그래밍

(14)
[Algorithm] 구현 - 왕실의 나이트 이것이 코딩 테스트다 - 구현 - 실전문제: 왕실의 나이트 🔍 답안 input_data = input() # column = ord(input_data[0]) - 96 #내 답 column = int(ord(input_data[0]) - int(ord('a'))) + 1 #책 답안 예시 row = int(input_data[1]) #가능한 이동경로 steps = [(-2,-1), (-2,1), (2,-1), (2,1), (-1,-2), (-1,2), (1,-2), (1,2)] result = 0 for step in steps: next_column = column + step[0] next_row = row + step[1] if next_column>=1 and next_row=1 an..
[Spring] 의존관계 자동 주입 의존관계 주입 방법 생성자 주입 수정자 주입 (setter주입) 필드 주입 일반 메서드 주입 생성자 주입 @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPol..
[Spring] @Configuration과 싱글톤 웹 애플리케이션과 싱글톤 웹 애플리케이션은 보통 여러 고객이 동시에 요청한다. 이럴때마다 요청한 고객에게 모두 서로 다른 새로운 객체를 반환하면 메모리 낭비도 심하고 효율성이 떨어짐. 따라서 딱 1개의 객체만 생성하고 이걸 공유하도록 하면 됨. ->이게 바로 싱글톤! 하지만, [스프링없이 순수한 자바로만 싱글톤을 구현했을 때의 단점] : 코드자체가 많이 들어감, DIP위반, OCP위반할 가능성 높아짐(구체클래스.getInstance()해야하므로), 유연성이 떨어짐, private생성자 때문에 자식클래스 만들기 어려움. …등등 싱글톤 컨테이너 스프링컨테이너는 객체 인스턴스를 싱글톤으로 관리. (객체 1개만 생성) 싱글톤패턴을 적용하지 않아도 자동으로 싱글톤으로 관리. 싱글톤 방식의 주의점 싱글톤 방식은 여..
[Python] 리스트 뒤집기 1. 슬라이싱 사용하기 reversed_list = list[::-1] 하지만 원본이 바뀌지는 않음! (비파괴적) 2. reverse(), reversed() reverse() : 원본 리스트가 바뀜. (파괴적) list = [1,2,3,4,5] list.reverse() print(list) #[5, 4, 3, 2, 1] print(type(list)) #reversed() 원본이 바뀌지 않음 reversed()하면 list_reverseiterator타입으로 반환하므로 list()리스트로 바꿔줘야 함. origin_list = [1,2,3,4,5] reversed_list = reversed(origin_list) print(reversed_list) # print(type(reversed_list)..
[Python] split()과 split(' ')의 차이 split() split(' ') *split('') -> 띄어쓰기가 있어야 함! 이렇게 하면 에러뜸! (ValueError: empty separator) 1. split() 모든 공백을 지운다. 개수상관없이. 공백을 한번에 처리. 예시 strings = input() words_list = strings.split() print(words_list) 입력 : ..two.one...threetwo.. (.은 스페이스로 간주) 출력 : ['two', 'one', 'threetwo'] 2. split(' ') 공백을 따로따로 처리. 문자열 사이에 있는 공백 하나 : 분할점으로 이용. 그 공백은 지움. 공백이 연속으로 나오는 경우 : 일반 문자 다음에 오는 공백만 지우고 나머지 공백은 리스트의 하나의 요소가..
[Python] input()과 readline()의 차이점 1. 속도 input()보다 readline()이 더 빠르다. 2. EOF처리방식 input은 EOF를 받을 때 EOFError를 일으키지만 sys.stdin.readline은 EOF를 받을 때 빈 문자열을 리턴한다. [차이점] - read() : 파일을 통째로 읽는다 - readline() : 개행문자를 포함한 한 줄만 읽는다. 줄단위로 그대로 읽어와 붙여서 출력한다 - readlines() : 파일의 끝까지 한번에 읽어온다. 각 줄이 개행문자(\n)가 포함되어 리스트로 저장된다. readlines()로 파일을 읽으면 한 줄, 한 줄이 각각 리스트의 원소로 들어갑니다. 여러 줄을 문자열로 입력받는 경우 : read() 여러 줄을 리스트로 입력받는 경우 : readlines() https://wikido..
[Baekjoon] 15552. 빠른 A+B - 파이썬 / readline() 문제 본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다. Python을 사용하고 있다면, input 대신 sys.stdin.readline을 사용할 수 있다. 단, 이때는 맨 끝의 개행문자까지 같이 입력받기 때문에 문자열을 저장하고 싶을 경우 .rstrip()을 추가로 해 주는 것이 좋다. 또한 입력과 출력 스트림은 별개이므로, 테스트케이스를 전부 입력받아서 저장한 뒤 전부 출력할 필요는 없다. 테스트케이스를 하나 받은 뒤 하나 출력해도 된다. https://www.acmicpc.net/problem/15552 해결 주의 - 입력데이터의 개수가 많을 때 input()을 사용하면 느려서 시간초과로 인한 오답판..
[Baekjoon] 11718. 그대로 출력하기 - 파이썬 / EOFError 문제 해결 while True: try: print(input()) except EOFError: break EOFError : End Of File Error 더이상 읽을 내용도 없고 입력도 없을 때 발생. - 파일의 끝에 도달하여 더이상 읽을 문자가 없을 때 발생 ->해결방법 : 파일의 끝을 확인해준다. - 사용자가 예상치 못한 입력을 했을 때 발생 - 파일의 내용이 없는 경우 발생 -> 해결방법 : try-except문 사용하기. 참고 https://c-omealong.tistory.com/25 [Python] 백준 11718번_그대로 출력하기 문제 https://www.acmicpc.net/problem/11718 11718번: 그대로 출력하기 입력이 주어진다. 입력은 최대 100줄로 이루어져 있..