분류 전체보기 126

[BOJ 백준] 12851번 : 숨바꼭질2

www.acmicpc.net/problem/12851 12851번: 숨바꼭질 2 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 � www.acmicpc.net 숨바꼭질2는 1과 달리, 최단 시간으로 동생을 찾는 경우의 수까지 출력하는 문제이다. 경우의 수를 따로 체크하는 것을 제외하면 숨바꼭질 1 의 풀이와 똑같다. 문제해결 동생을 찾은 시간의 값을 저장하는 배열(answer)을 만든다. 최대로 걸리는 시간은 수빈이가 0에 있고, 동생이 100000에 위치하고 있을 때 1칸 씩 앞으로 가면 100000초가 걸리는 것이므로 배열..

[BOJ 백준] 1697번 : 숨바꼭질

www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 �� www.acmicpc.net 숨바꼭질 시리즈를 전부 풀어보려고 한다. 총 6개의 숨바꼭질 문제가 있으며, 내용은 거의 똑같지만 문제가 요구하는 조건이 조금씩 다르다. 대부분 탐색문제이며 BFS, DFS, 다익스트라를 잘 활용해서 풀면 될 듯 하다. 동생의 위치를 찾을 수 있는 가장 빠른 시간을 구하는 것이므로 BFS를 활용해서 풀 수 있다. 기본적인 BFS를 구현하면 되는 간단한 문제였다. 문제 해결 큐에 ..

[BOJ 백준] 16113번 : 시그널

www.acmicpc.net/problem/16113 16113번: 시그널 zxcvber는 외계인을 연구하는 과학자다. 그는 지난 10년간 우주에서 오는 시그널를 연구했지만, 아무런 성과가 없었다. 그러던 어느 날, 갑자기 우주에서 이상한 시그널이 오기 시작했다. zxcvber는 � www.acmicpc.net 시뮬레이션 문제였다. 구현 방법을 떠올리는데 크게 어렵진 않았지만, 사소한 오류를 고치는 과정이 꽤 걸렸다. 또한, 코드도 깔끔하지 않다. 중복된 코드도 있고 예외처리를 위해 goto를 사용했다.. 좀 더 깔끔하게 짤 방법이 있을 것이다. 문제 해결 방법 디지털 숫자를 위에서 아래로 읽었을 때 나오는 값을 '#'과 '.' 의 형태의 문자열로 따로 저장해둔다. 예를들어 2라는 숫자를 왼쪽 위에서 시..

2021 카카오 블라인드 코딩테스트 후기

오늘 나온 카카오 문제의 알고리즘 유형은 대략 아래와 같다 1번 : 문자열 파싱 및 조건에 맞게 처리 2번 : 백트래킹(조합) 3번 : 이분탐색 4번 : 다익스트라 or 플로이드 와샬(둘 다 가능) 5번 : 투 포인터 6번 : BFS+경우의 수 7번 : 트리 DP 7번을 제외하고는 다 아는 알고리즘인데 오랜만에 알고리즘을 푸니 제대로 못풀었다. 꾸준하게 푸는게 중요한 것 같다

C++ 문자열 파싱, 비교

프로그래머스에서 문제를 풀다보면 입력이 문자열로 주어지는 경우가 많다. C++은 문자열 관련 기능이 다른 언어에 비해 빈약하기 때문에 정리해두자 문자열 비교 compare 함수 str1.compare(str2)의 결과값이 -1 : str1이 str2보다 사전적으로 앞에 있음 0 : str1과 str2는 같은 문자열임 1 : str1이 str2보다 사전적으로 뒤에 있음 또한 두 문자열의 부분 문자열을 비교할 수 있다. str1의 0번째 인덱스부터 길이가 2인 문자열과 str2의 0번째 인덱스부터 길이가 2인 문자열 끼리 비교. 리턴값은 위와 같음 str1 = "HelloWorld" str2 = "HelloMyWorld" str1.compare(0,2,str2,0,2); 대소문자 전환 transform 함수..

Programming/C++ 2020.09.12

[BOJ 백준] 17479번 : 정식당

www.acmicpc.net/problem/17479 17479번: 정식당 일반메뉴는 noodle 2개로 20,000원, 특별메뉴는 cutlet 2개와 friedrice 1개로 32,000원, 둘이 합쳐 52,000원으로 서비스메뉴 하나를 주문할 수 있다. www.acmicpc.net 해시 자료구조를 사용하고 싶어서 풀어본 문제 해시 맵을 4개 사용해서 각 메뉴, 가격, 주문수량에 맞게 정보를 저장해주면 된다. 구조체를 사용하여 해시 맵에 저장하면 더 간단하게 풀 수 있는데, 연산자 오버라이딩도 해줘야 해서 그냥 여러개의 해시맵을 만들었다. 4번 시도만에 해결했는데 틀린원인은 2개였다 service 오타 자료형 범위 오타는 금방 찾았지만, 자료형 범위를 찾는데 좀 오래걸렸다. 각 메뉴등급별로 최대 5만개..

#1 Azure VM, Tomcat, Java, Mysql 설치 및 Tomcat 실행

Azure VM 설치환경 : Ubuntu 18.06 VM의 리눅스 서버를 하나 생성한다. 이미지 크기나 CPU, RAM 등은 기본으로 세팅 되있는걸 쓴다. 사용자 id와 pw를 설정하고 VM을 생성한다. 네트워킹 기본적으로 SSH 포트가 열려있을 것이다. 여기에 추가적으로 내가 사용하는 포트는 `8080(Tomcat)`, `3306(MySQL)`, `8443(Tomcat HTTPS)`이 필요하므로 인바운드 포트 규칙에서 추가한다. AllowVnetInBound, AllowAzureLoadBalancerInBound, DenyAllInBound 포트는 건드리지 않고 냅둔다. VM 생성과 네트워킹이 완료되면 `putty`, `xshell` 등의 프로그램을 사용해서 VM에 접속한다. 나는 [MobaXterm]..

Programming/Java 2020.09.02

[BOJ 백준] 10836번 : 여왕벌

문제링크 : https://www.acmicpc.net/problem/10836 일반적인 시뮬레이션으로 풀었더니 시간초과가 났다. 입력의 최댓값이 100만이어서 그랬다. 문제 해결 조건 1번의 애벌레의 크기에 따라 나머지 애벌레의 크기가 바뀌는 것 조건 1번의 애벌레를 먼저 다 키운 뒤, 순차적으로 크기비교를 통해 남은 애벌레의 크기를 정해주면 되었다. 소스코드 #include #define endl "\n" #define MAX 700 using namespace std; int n, m; int zero = 0; int one = 0; int two = 0; long long arr[MAX][MAX]; long long backup[MAX][MAX]; void grow() { int y = n - 1..

#0 프로젝트 개발 환경 (Tomcat 9.0, Mysql 5.7, Azure Cloud)

약 한 달에 걸쳐 진행한 프로젝트를 정리하는 목적으로 하는 포스팅이다. 작업을 하며 정리한 내용과 실수로 많이 헤맸던 부분들, 시간을 많이 잡은 부분을 중점적으로 정리할 예정이다. 처음 생각했던 것 처럼 다 하고나니 많이 어려운 것도 아니었고, 설정만 잘 해주면 되는 작업들이었다. 많은 블로그 글을 참고하며 하다보니, 설정이 다른 부분들로 인해 어려움을 많이 겪었다. 이번 프로젝트는 서버를 만드는데 기본적인 과정이기 때문에 정리하면 좋을것 같다. 단순히 문제상황에 대한 것만이 아닌, 시행착오를 겪으며 알게 된 내용도 같이 정리하면 좋을 것 같다. 개발 환경 OS : Ubuntu 18.04 Cloud Service : Azure Database : mysql 5.7 Java : jdk1.8.0_261 Ja..

Programming/Java 2020.08.31

[BOJ 백준] 18430번 - 무기공학

https://www.acmicpc.net/problem/18430 18430번: 무기 공학 첫째 줄에는 길동이가 가지고 있는 나무 재료의 세로, 가로 크기를 의미하는 두 자연수 N, M이 주어진다. (1 ≤ N, M ≤ 5) 다음 N개의 줄에 걸쳐서, 매 줄마다 나무 재료의 각 위치의 강도를 나타내 www.acmicpc.net 전형적인 백트래킹으로 푸는 문제였다. 우선, 부메랑은 다음과 같이 4가지 모양을 가질 수 있고, 이를 최대한 많이 사용하여 최대 강도를 만들어 내야 한다. 문제 해결 방법 예를들어 첫번째 부메랑을 만들기 위해서는가운데(y, x)를 기준으로 (y,x-1) 과 (y+1, x)가 범위 내에 있어야 하고 (y,x-1)과 (y+1, x)가 사용된 적이 없어야 한다. 나머지 부메랑들도 마찬..