분류 전체보기(137)
-
백준 7576번 : 토마토
https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 아이디어 단순 BFS이다. 하지만 deque를 사용하면 시간초과가 나기 때문에, day를 제일 첫 번째 원소로 가지고 있는 heapq를 사용해야한다. import sys import heapq input = sys.stdin.readline m,n = map(int, input().rstrip().split()) maps = [] queue = [] visited = [[0 for..
2021.10.05 -
백준 20436 : ZOAC 3
https://www.acmicpc.net/problem/20436 20436번: ZOAC 3 첫 번째 줄에는 두 알파벳 소문자 sL, sR이 주어진다. sL, sR은 각각 왼손 검지손가락, 오른손 검지손가락의 처음 위치이다. 그 다음 줄에는 알파벳 소문자로 구성된 문자열이 주어진다. 문자열의 www.acmicpc.net 매번 느끼는거지만 문제를 잘 읽자... 오른손은 한글의 모음 부분만, 왼손은 한글의 자음 부분만 가능하다는 조건을 빼놓아서 괜히 어렵게 풀었다. 그냥 단순하게 구현만 하면 되는 문제 import sys input = sys.stdin.readline l,r = input().rstrip().split() want_str = list(input().rstrip()) keyboard_lis..
2021.10.05 -
백준 21611번 : 마법사 상어와 블리자드
https://www.acmicpc.net/problem/21611 21611번: 마법사 상어와 블리자드 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그, 비바라기 마법을 할 수 있다. 오늘 새로 배운 마법은 블리자드이고, 크기가 N×N인 격자에서 연습하려고 한다. N은 항상 홀수이고, ( www.acmicpc.net 복잡한 구현문제이다. 전체적인 구조는 1시간정도 걸려서 구현했는데, 구슬폭파 부분에서 시간이 많이 걸렸다. 차례대로 구슬 폭파를 하지 않고, 한꺼번에 해야하는데 차례대로 구슬폭파를 하는 식으로 구현해서 몇 시간이나 낭비했다. 아이디어 먼저 N*N 크기의 맵의 각 자리에 숫자를 부여한 뒤, 이를 참고해서 1번 자리에 있는 숫자부터 N*N-1번 자리에 있는 숫자까지 maps 배열에 ..
2021.10.05 -
[Java Script] 객체지향 프로그래밍 : 상속
- 자바스크립트는 클래스를 기반으로 하는 전통적인 상속을 지원하지는 않음 => 하지만 객체 프로토타입 체인을 이용하여 상속을 구현해낼 수 있다. 1. 프로토타입을 이용한 상속 (1) 상속 function create_object(o){ function F() {} F.prototype = o; return new F(); } - 위의 코드는 더글라스 크락포드가 자바스크립트 객체를 상속하는 방법으로 소개한 코드이다. - create_object() 함수는 인자로 들어온 객체를 부모로 하는 자식 객체를 생성하여 반환한다. => 반환된 객체는 부모 객체의 프로퍼티에 접근할 수 있고, 자신만의 프로퍼티를 만들 수도 있다. => 이렇게 프로토타입의 특성을 활용하여 상속을 구현하는 것이 프로토타입 기반의 상속 - ..
2021.09.14 -
[Java Script] 객체지향 프로그래밍 : 클래스, 생성자, 메서드
클래스로 객체의 기본적인 형태와 기능을 정의 생성자로 인스턴스를 만들어서 사용할 수 있음 클래스에 정의된 메서드로 여러 가지 기능을 수행할 수 있음 모든 인스턴스가 클래스에 정의된 대로 같은 구조이고 보통 런타임에 바꿀 수 없다. 정확성, 안전성, 예측성 등의 관점에서 클래스 기반 언어는 프로토타입 기반의 언어보다 좀 더 나은 결과를 보장한다. Java, C++이 여기에 속한다 객체의 자료구조, 메서드 등을 동적으로 바꿀 수 있음 동적으로 자유롭게 객체의 구조와 동작 방식을 바꿀 수 있음 자바스크립트가 여기에 속함 - 자바스크립트는 거의 모든 것이 객체이고, 특히 함수 객체로 많은 것을 구현할 수 있다. => 클래스, 생성자, 메서드도 모두 함수로 구현할 수 있다 1. 자바스크립트로 객체 생성하기 (자원..
2021.09.14 -
[Spring5입문] DB 연동
1. JDBC 프로그래밍의 단점을 보완하는 스프링 - JDBC API를 이용하면 데이터 처리와 상관없는 코드를 반복적으로 사용하게 된다. - 구조적인 반복을 줄이기 위한 방법은 템플릿 메서드 패턴과 전략 패턴을 함께 사용하는 것이다. => 스프링은 이 두 패턴을 엮은 JdbcTemplate 클래스를 제공한다 - 스프링의 @Transactional 애노테이션을 사용하면 트랜잭션 관리가 쉽다. 2. 예시 public class MemberDao { private JdbcTemplate jdbcTemplate; public MemberDao(DataSource dataSource){ this.jdbcTemplate = new JdbcTemplate(dataSource); } public Member selec..
2021.09.14