본문 바로가기

전체 글138

[프로그래머스] level 3 - 타일 장식물 https://programmers.co.kr/learn/courses/30/lessons/43104 코딩테스트 연습 - 타일 장식물 | 프로그래머스 대구 달성공원에 놀러 온 지수는 최근에 새로 만든 타일 장식물을 보게 되었다. 타일 장식물은 정사각형 타일을 붙여 만든 형태였는데, 한 변이 1인 정사각형 타일부터 시작하여 마치 앵무조개의 나선 모양처럼 점점 큰 타일을 붙인 형태였다. 타일 장식물의 일부를 그리면 다음과 같다. 그림에서 타일에 적힌 수는 각 타일의 한 변의 길이를 나타낸다. 타일 장식물을 구성하는 정사각형 타일 한 변의 길이를 안쪽 타일부터 시작하여 차례로 적으면 다음과 같다. [1, 1 programmers.co.kr 본 문제는 DP 문제로 분류되어 있지만 메모이제이션 없이도 문제가 해결.. 2020. 2. 9.
[프로그래머스] level 3 - 이중우선순위큐 https://programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 | 프로그래머스 programmers.co.kr /* 문제의 해설에 앞서 내가 프로그래머스 문제를 푸는 나만의 기준에 대해 알리고자 한다. 백준은 온라인 강의 중급 2/3까지, 프로그래머스는 level 3까지의 문제를 해결하려고 노력하고 있다. 개인적인 생각으로는 프로그래머스 level 2까지는 백준 온라인 강의 초급보다 쉬운 거 같다. 그렇기 때문에 다음과 같은 순서로 코딩 문제를 풀고 있다. 프로그래머스 level 1, 2 문제 다 풀기기 백준 초급문제 풀기 백준 중급문제 풀기 풀다가 막히면 프로그래머스 level 3 문제 풀기 다시 백준 중급문제 풀기 (brute .. 2020. 2. 8.
[백준 6087] 레이저 통신, C++ https://www.acmicpc.net/problem/6087 6087번: 레이저 통신 문제 크기가 1×1인 정사각형으로 나누어진 W×H 크기의 지도가 있다. 지도의 각 칸은 빈 칸이거나 벽이며, 두 칸은 'C'로 표시되어 있는 칸이다. 'C'로 표시되어 있는 두 칸을 레이저로 통신하기 위해서 설치해야 하는 거울 개수의 최솟값을 구하는 프로그램을 작성하시오. 레이저로 통신한다는 것은 두 칸을 레이저로 연결할 수 있음을 의미한다. 레이저는 C에서만 발사할 수 있고, 빈 칸에 거울('/', '\')을 설치해서 방향을 90도 회전시킬 수 있다. www.acmicpc.net 본 문제는 Olympiad 2008-2009 Season January 2009 Contest Silver 3번 문제다. 지도에 빈칸과.. 2020. 2. 7.
[백준 1790] 수 이어 쓰기 2, C++ https://www.acmicpc.net/problem/1790 1790번: 수 이어 쓰기 2 첫째 줄에 N(1 ≤ N ≤ 100,000,000)과, k(1 ≤ k ≤ 1,000,000,000)가 주어진다. N과 k 사이에는 공백이 하나 이상 있다. www.acmicpc.net 본 문제는 1 ~ n 까지의 수를 이어서 썼을 때 길이를 구하고 k의 위치의 값을 출력하는 문제다. n의 최대값이 매우 크기 때문에 실제로 값을 구해서 찾는 것은 불가능 하다. 따라서, k와 인접한 위치를 찾아서 출력하는 방식을 이용해야 한다. 이때, 이분 탐색을 이용하면 빠르게 답을 구할 수 있다. 예를 들어 n = 20 일 때, 우선 n까지의 길이가 k보다 짧을 경우를 예외처리 한다. 1 ~ 9 까지의 길이를 구하고 10 ~.. 2020. 2. 5.
[백준 11728] 배열 합치기, C++ https://www.acmicpc.net/problem/11728 11728번: 배열 합치기 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거나 같은 정수이다. www.acmicpc.net 본 문제는 merge sort 문제다. 분할 정복으로 정렬을 해야 하는 문제인데 실제 문제에서는 분할 부분은 생략되어있다. /* 개인적으로 merge sort는 군 복학하고 첫 학기때, for를 이용하여 1 ~ 100까지 더하는 코딩도 못할 시기에 했던 첫 과제였다. 그 당시 또 C언어 기초를 배울 시기라 linked list로 구현했던 것으로.. 2020. 2. 5.
[백준 10816] 숫자 카드 2, C++ https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이가 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. 셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 몇 개 가지고 있는 숫자 카드인지 구해야 할 M개의 정수가 주어지며, 이 수는 공백으로 구분되어져 있다. 이수도 -10,00 www.acmicpc.net 본 문제는 n개의 숫자 카드를 보유하고 있을 때, 해당 숫자가 적혀있는 숫자 카드의 개수를 m번 출력하는 문제다. 이분 탐색을 .. 2020. 2. 5.
[백준 17089] 세 친구, C++ https://www.acmicpc.net/problem/17089 17089번: 세 친구 첫째 줄에 사람의 수 N(3 ≤ N ≤ 4,000), 친구 관계의 수 M(0 ≤ M ≤ 4,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계를 의미하는 두 정수 A, B가 주어진다. 친구 관계는 A와 B, 그리고 B와 A가 친구라는 것을 의미한다. 사람은 1번부터 N번까지 번호가 매겨져 있다. 같은 친구 관계가 두 번 이상 주어지는 경우는 없다. www.acmicpc.net 본 문제는 n명의 사람 중 a, b, c 세 명을 선택한다. a, b, c 세 명 다 친구 일 경우 각각 친구의 수의 합을 구한다. 단, a의 친구 수를 계산할 때, b와 c는 빼고 계산해야 하고, b의 친구 수를 계산할 때는 a와 c.. 2020. 2. 4.
[백준 17088] 등차수열 변환, C++ https://www.acmicpc.net/problem/17088 17088번: 등차수열 변환 크기가 N인 수열 A = [A1, A2, ..., AN]이 있을 때, 모든 1 ≤ i < N에 대해서, Ai+1-Ai가 모두 일치하면 등차수열이라고 한다. 예를 들어, [3], [6, 6, 6], [2, 8, 14, 20], [6, 4, 2]는 등차수열이고, [4, 5, 4], [6, 3, 1]은 등차수열이 아니다. 수열 B = [B1, B2, ..., BN]을 등차수열로 변환하려고 한다. 각각의 수에는 연산을 최대 한 번 적용할 수 있다. 연산은 두 가 www.acmicpc.net 본 문제는 주어진 수열을 등차수열로 변환하는 문제로 각각의 수에 연산을 최대 한 번 적용할 수 있고, 연산은 1을 더하거나 빼는.. 2020. 2. 2.
spring 실습을 위한 intelliJ 설치 (과정속의 여러가지 실패) 요즘 spring 공부한다고 인프런에서 백기선님의 강의를 보고 있다. https://www.inflearn.com/roadmaps/8 열심히 강의를 보면서 소스코드를 열심히 따라 작성하고 있다. 강의에서 intelliJ를 사용하는데 intelliJ는 총 3가지 버전이 있다. https://www.jetbrains.com/idea/download/#section=windows Download IntelliJ IDEA: The Java IDE for Professional Developers by JetBrains Download the latest version of IntelliJ IDEA for Windows, macOS or Linux. www.jetbrains.com Ultimate (유료) Com.. 2020. 2. 2.