분류 전체보기
-
BOJ) 뱀과 사다리 게임알고리즘/백준 2020. 6. 30. 14:48
뱀과 사다리 게임 16928번: 뱀과 사다리 게임 첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으 www.acmicpc.net 풀이 이 문제는 BFS를 활용해 푸는 것이 효율적인 문제다. 딱히 어려운 점은 없었지만, 어이없이 두 번 실수한 부분이 있었다. 첫번째는 while을 통해서 입력받을 때다. for문을 두 번 쓰자니 번거로울 것 같아서 while로 한번에 받으려고 조건을 넣었었는데, 바보같이 or( || ) 조건이 아니라 and( && ) 조건을 걸었었다. 그리고, 처음 시작하는 좌표가 문제에서 1부터라고 제시돼 있었..
-
BOJ) 두 동전알고리즘/백준 2020. 6. 29. 16:05
두 동전 16197번: 두 동전 N×M 크기의 보드와 4개의 버튼으로 이루어진 게임이 있다. 보드는 1×1크기의 정사각형 칸으로 나누어져 있고, 각각의 칸은 비어있거나, 벽이다. 두 개의 빈 칸에는 동전이 하나씩 놓여져 있고, �� www.acmicpc.net 풀이 블로그에 올리기 창피한 코드지만, 기록을 먼저 해두고 나중에 다시 풀고자 올린다. 브루트 포스를 제대로 사용했다기 보다, 시뮬레이션 문제로 인식하고 풀었기 때문에 메모리와 시간 효율성이 현저히 떨어진다. 그래도 로직을 설명하자면, 입력을 받을 때 먼저 두 동전의 위치를 저장했다. 그리고 해당 동전을 step에 따라 돌면서, 10을 초과하면 -1을 출력하고 10 이하에서 동전이 하나 남는 경우는 step을 출력했다. 동전을 이동시킬 때는, 범위..
-
BOJ) 이모티콘알고리즘/백준 2020. 6. 29. 15:56
이모티콘 14226번: 이모티콘 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만�� www.acmicpc.net 풀이 푸는데 시간이 조금 걸렸다. 처음에 풀었을 때는 n이 300정도 이상일 때, 시간이 너무 오래걸려서 가지치기를 계속 해줬다. 그래서 700정도까지는 통과할 수준으로 나올 수 있는데, 1000까지는 도저히 무리였다. 이 때는, visit을 이용하지 않았다. 굳이 필요 없었다고 생각했다. 하지만, visit변수를 만들어야겠다는 생각을 했고, screen에 표시된 스마일 갯수에 대해서만 visit을 체크해줬다. 그렇게 하니까 몇가지 경우에서 틀린 답이 ..
-
BOJ) 1,2,3 더하기알고리즘/백준 2020. 6. 29. 15:49
1,2,3 더하기 9095번: 1, 2, 3 더하기 문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 www.acmicpc.net 풀이 브루트 포스 문제로 입력값 n을 1, 2, 3 숫자의 합으로 나타낼 수 있는 경우의 수를 구하는 문제다. 또한, 순서가 있기 때문에, 1+1+2 와 1+2+1은 다른 것으로 간주한다. 예전에 풀었던 문제인데, 기억에 남아있지 않아서 새롭게 풀었다. 먼저, 예전에 풀었던 방식은 점화식을 통해서 답을 찾았었다. dn = dn-3 + dn-2 + dn-1 이라는 식이 나와서..
-
3장) 스프링 부트에서 JPA로 데이터베이스 다뤄보자Java & Spring/스프링 부트와 AWS로 혼자 구현하는 웹 서비스 2020. 6. 28. 17:17
웹 서비스 개발, 운영에서 이전에는 MyBatis와 같은 SQL 매퍼를 이용해서 DB 쿼리를 작성했었다. 문제점 1) SQL 다루는 시간 > 개발 시간 2) 객체지향 프로그래밍과 관계형 디비 간 상호 호환성 저하(테이블 모델링에 더 집중하는 현상) 발생 (패러다임 불일치) 객체지향 프로그래밍 : 메세지를 기반으로 기능과 속성을 한 곳에서 관리 관계형 데이터베이스 : 어떻게 데이터를 저장할지 초점 ~> JAP가 이 문제를 해결 JPA 자바 표준 ORM(Objecet Relational Mapping) OOP 언어와 RDB 중간에서 패러다임을 일치시켜주는 기술 Spring Data JPA JPA는 인터페이스로서 자바 표준명세서 따라서, 사용하기 위해서는 구현체가 필요(Hibernate, Eclipse Lin..
-
2장) 스프링 부트에서 테스트 코드를 작성하자Java & Spring/스프링 부트와 AWS로 혼자 구현하는 웹 서비스 2020. 6. 27. 01:24
테스트 코드 소개 TDD vs 단위 테스트 TDD - 테스트가 주도하는 개발 (테스트 코드를 먼저 작성하는 것부터 시작) 레드 그린 사이클 항상 실패하는 테스트를 먼저 작성하고(Red) 테스트가 통과하는 프로덕션 코드를 작성하고(Green) 테스트가 통과하면 프로덕션 코드를 리팩토링함(Refactor) 단위 테스트 - TDD의 첫 번째 단계인 기능 단위의 테스트 코드를 작성하는 것 따라서, 테스트 코드를 먼저 작성하지 않아도, 리팩토링을 포함하지 않아도 됨 개발 단계 초기에 문제를 발견하게 도와준다. 리팩토링을 하거나 라이브러리 업그레이드 등에서 기존 기능이 올바르게 작동하는지 확인할 수 있음 기능에 대한 불확실성을 감소 시스템에 대한 실제 문서를 제공 단위 테스트 장점 빠른 피드백 자동검증이 가능 개발..
-
4장) 변수와 스코프, 메모리Java Script/프론트앤드 개발자를 위한 자바스크립트 2020. 6. 26. 21:51
변수와 스코프, 메모리 JS는 느슨한 변수 타입 ~> 변수는 특정 시간 특정 값을 가리키는 문자 그대로 이름일 뿐 원시 값과 참조 값 원시 값 : 단순 데이터 (스택 메모리에 저장) 참조 값 : 여러 값으로 구성되는 객체를 가리킴(힙 메모리에 저장) 변수에 값을 할당 ~> JS 엔진이 원시 데이턴지 참조 데이턴지 판단 JS는 메모리 위치에 직접 접근하는 것을 허용 X ~> 객체를 조작할 때는 객체 자체가 아닌 객체에 대한 참조를 조작하는 것 동적 프로퍼티 참조 값을 다룰 때는 언제든 프로퍼티와 메서드를 추가/삭제 가능 var person = new Object(); person.name = "Zin0"; alert(person.name); // Zin0 var name = "Zin0"; name.age ..
-
BOJ) 로마 숫자 만들기알고리즘/백준 2020. 6. 26. 15:51
로마 숫자 만들기 16922번: 로마 숫자 만들기 2, 6, 10, 11, 15, 20, 51, 55, 60, 100을 만들 수 있다. www.acmicpc.net 풀이 Brute force 문제를 푼지 오래된 것 같아서 도전했다. n=20이기 때문에, 통과하려면 가지치기를 어떻게 해야하나 많은 고민을 해봤다. 질문 탭에도 게시글이 몇 개 없어서, 참고할 수도 없었다. 그래서, 처음 선택한 방법은 로마 숫자 1,5,10,50을 n만큼 2차원 배열을 만들어서 각 숫자가 0~n까지 반복하면 만들어지는 숫자를 저장했다. 이후에, 해당 숫자를 선택하면서 count를 i개 씩 줄여줬는데, 고작 해봐야 13 -> 14 정도까지만 구할 수 있었다. 어떻게 해야하나 고민하다가 Set에서 visit으로 바꿔주었다. 어차..