분류 전체보기 118

[백준11048] - 이동하기(JAVA)

[문제] 출처 - https://www.acmicpc.net/problem/11048 11048번: 이동하기 준규는 N×M 크기의 미로에 갇혀있다. 미로는 1×1크기의 방으로 나누어져 있고, 각 방에는 사탕이 놓여져 있다. 미로의 가장 왼쪽 윗 방은 (1, 1)이고, 가장 오른쪽 아랫 방은 (N, M)이다. 준규는 www.acmicpc.net [문제풀이] N*M 크기의 배열과 좌표가 주어졌으니 BFS, 나 DFS 로 푸는게 아닌가 생각이 들수도있지만 이문제는 DP문제이다. 준규가 이동할 수 있는 방향은 (r+1, c), (r, c+1), (r+1, c+1) 이다. 구하려고 하는 값은 이동 하면서 가져올 수 있는 사탕 개수의 최댓값을 구하기 때문에 점화식을 D[ x ][ y ] = x , y 지점에 도착했..

백준 문제풀이 2022.01.15

[백준 14395] - 4연산(JAVA)

[문제] 출처 -https://www.acmicpc.net/problem/14395 14395번: 4연산 첫째 줄에 정수 s를 t로 바꾸는 방법을 출력한다. s와 t가 같은 경우에는 0을, 바꿀 수 없는 경우에는 -1을 출력한다. 가능한 방법이 여러 가지라면, 사전 순으로 앞서는 것을 출력한다. 연산의 아 www.acmicpc.net [문제풀이] 정수 s 가 있는데 이 값을 t로 바꾸는 최소 연산 횟수를 구하는 프로그램 작성하라! 이다. 즉 한 정점 s 에서 정점 t 로 갈 수 있는 최소 연산 횟수 연산 횟수는 4가지 방법이 있는데 각 방법을 수행하면 연산 횟수 1이 증가한다. 여기서 문제를 그래프로 바꿀 수 있고 가중치가1인 최소의 횟수를 구하는거니까 BFS로 접근하여 문제를 해결 할 수 있다. 각 연..

백준 문제풀이 2022.01.14

객체 지향 프로그래밍 (Object-Oriented Programming) 이란? - JAVA

객체 지향 프로그래밍(OOP)의 정의는 객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 출처 - 위키백과 이 사전적 의미만 보고 이해가 안 가거나 그래서 객체 지향 프로그래밍은 왜 쓰는 거야? 라는 의문이 들을 수 있다. 일단 객제지향이라 하면 비슷한 변수와 기능(함수)들을 묶어 하나의 객체로 만들어 사용합니다. 객체지향언어의 주요 특징으로는 다음과 같습니다. 코드의 재사용성이 높다. 코드의 관리가 용이하다. 신뢰성이 높은 프로그래밍을 가능하게 한다. 재사용성, 유지보수, 중복된 코드의 제거 세가지 관점에서 보면 이해하기 쉬울 것 입니..

[프로그래머스 Level2] 더 맵게 (JAVA)

[문제] 출처 - https://programmers.co.kr/learn/courses/30/lessons/42626?language=java 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr [문제 풀이] 이 문제의 핵심은 '우선순위 큐' 입니다. 우선순위 큐는 아직 포스팅을 안해서 간단하게 설명하면 보통의 큐처럼 동작하지만 '우선순위' 속성을 갖습니다. 새 요소에 우선순위를 부여해서 큐에 삽입하고 가장 높은 우선순위를 갖는 요소부터 빠져나오도록 합니다. 그래서 이문제는 왜 우선순위 큐를 사용하..

프로그래머스 2022.01.12

[프로그래머스 Level2] 오픈채팅방 (JAVA) - 2019 Kakao

[문제] 출처 - https://programmers.co.kr/learn/courses/30/lessons/42888?language=java 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr [문제 풀이] StringTokenizer , HashMap, List 를 사용하여 풀 수 있습니다. -record에 있는 각 단어는 공백으로 구분되기 때문에 StringTokenizer를 활용하여 값을 토큰화 하여 사용한다. -HashMap 에 아이디(key)와 닉네임(value) 로 저장을 하게 되는데 key 값은 ..

프로그래머스 2022.01.11

[백준 1931] - 회의실 배정(JAVA)

출처 -https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net [문제풀이] 시간에 따라 최대한 많이 배정해야하거나 선택하는 문제를 활동 선택 문제 라고 한다. 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 최대 개수를 찾아야한다. 이전의 선택한 회의 결과가 이후에 결과에 영향을 미치지 않게 하려면, 이전 회의 종료시간이 이후의 회의 시작에 겹치면 안된다. 그래서 '종료 시간을 기준으로 문제를 정렬' 하고 겹치지 않는 활동에 대해 종료시간이 더 빠르면 더 많은 활동을 선택할 수 있는 시간이 많아 진다! Comparator 인터페이스를 사용하여 재정의(Overr..

백준 문제풀이 2022.01.10

[백준 16236] - 아기상어(JAVA)

[문제] 출처 - https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net [문제풀이] BFS와 구현으로 푸는 문제이다. 구현 문제만 오면 많이 버벅여서 더 많은 연습이 필요 할 것 같다. https://moonsbeen.tistory.com/231 를 참고하여 문제를 풀었다. 맨 처음 상어의 위치를 Queue에 넣어주고 해당 위치를 빈칸으로 만든다. 1. BFS탐색을 하여 상어가 먹을 수 있는 물고기 후보들을 List에 담는다. 2. 만약 물고..

알고리즘 정리 2022.01.09

[백준 10026] - 적록색약

[문제] 출처 - https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net [문제 풀이] 맵은 R, G, B 중 하나를 색칠한 그림이 있다. 적록색약은 'G' 를 'R' 으로 판단한다 구역은 같은 색으로 이루어져 있고 같은 색상이 상하좌우에 인접해 있는 경우 두 글자는 같은 구역이다. 적록색약인 사람이 봤을 때 와 아닌 사람이 봤을 때 구역의 수를 구하자! 적록색약이 아닌 사람의 봤을 때 구역을 BFS로 구한다. 구역을 StringBuilder에..

카테고리 없음 2022.01.09

[백준 16933] - 벽 부수고 이동하기3(JAVA)

[문제] 출처 - https://www.acmicpc.net/problem/16933 16933번: 벽 부수고 이동하기 3 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000), K(1 ≤ K ≤ 10)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다. (1, 1)과 (N, M)은 항상 0이라고 가정하자. www.acmicpc.net [문제 풀이] 골드 1의 난이도를 가졌지만 벽 부수고 이동하기 와 벽 부수고 이동하기2 를 해결했다면 이 문제도 해결할 수 있다! K개를 부실 수 있는 조건과 낮과 밤이라는 조건이 생겼다. 이동을 하거나 이동하지 않고 같은 칸에 머물러도 낮과 밤은 바뀐다. (이동하지 않아도 방문한 칸의 개수가 늘어나는것으로 처리) 벽을 부수고 이동하는 것이 경..

카테고리 없음 2022.01.07

[백준 14442] - 벽 부수고 이동하기 2(JAVA)

[문제] 출처 - https://www.acmicpc.net/problem/14442 14442번: 벽 부수고 이동하기 2 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000), K(1 ≤ K ≤ 10)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다. (1, 1)과 (N, M)은 항상 0이라고 가정하자. www.acmicpc.net [문제 풀이] 이전에 포스팅한 백준 2206 - 벽 부수고 이동하기 와 풀이가 크게 달라질 게 없다. [ 2206문제 해설 ] 백준 - 2206번을 풀 수 있으면 어렵지 않게 이 문제를 해결할 수 있을 것이다. 이번 문제는 이전 문제와 다르게 벽을 K개 부실 수 있는 조건이 추가되었다. K개를 부실 수 있는 조건을 지켜 코드를 만들면 된다. B..

백준 문제풀이 2022.01.06