Seren dev's blog
article thumbnail
[프로그래머스] Lv.1 : [1차] 다트 게임 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/17682 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 다트 게임 카카오톡 게임별의 하반기 신규 서비스로 다트 게임을 출시하기로 했다. 다트 게임은 다트판에 다트를 세 차례 던져 그 점수의 합계로 실력을 겨루는 게임으로, 모두가 간단히 즐길 수 있다. 갓 입사한 무지는 코딩 실력을 인정받아 게임의 핵심 부분인 점수 계산 로직을 맡게 되었다. 다트 게임의 점수 계산 로직은 아래와 같다. 다트 게임은 총 3번의 기회로 구성된다. 각 기회마다 얻..

article thumbnail
[프로그래머스] Lv.1 : [1차] 비밀지도 - 자바[Java]

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도 1"과 "지도 2"라고 하자. 지도 1 또는 지도 2 중 어느 하..

article thumbnail
[백준] 9205번 : 맥주 마시면서 걸어가기 - 자바[Java]

https://www.acmicpc.net/problem/9205 9205번: 맥주 마시면서 걸어가기 송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다. www.acmicpc.net 풀이 맥주 한 박스에는 맥주가 20개 들어있으며 50미터에 한 병씩 마시기 때문에 최대 1000m를 갈 수 있다. 즉, 처음 출발할 때와 편의점에 들렀을 때 최대 1000m를 갈 수 있다. 처음 출발할 때 1000m 이내로 아직 가지 않은 편의점이 있다면 그 편의점으로 가고, 이 과정을 반복해서 페스티벌 장소에 도착할 수 있다면 happy를 출력하고, 갈 수 없다면 sad를 출력하면 된다. ..

article thumbnail
[백준] 15787번 : 기차가 어둠을 헤치고 은하수를 - 자바[Java]

https://www.acmicpc.net/problem/15787 15787번: 기차가 어둠을 헤치고 은하수를 입력의 첫째 줄에 기차의 수 N(1 ≤ N ≤ 100000)과 명령의 수 M(1 ≤ M ≤ 100000)가 주어진다. 이후 두 번째 줄부터 M+1번째 줄까지 각 줄에 명령이 주어진다. www.acmicpc.net 풀이 기차의 상태를 저장하는 2차원 배열을 선언한 후, 입력하는 명령에 따라 기차의 상태를 변경하면 된다. 그 후 모든 기차를 탐색하여 기차의 상태가 중복되는게 있는지 검사한다. 로직 1. n과 m을 입력받는다. 2. 기차의 상태를 저장하는 boolean형 2차원 배열 train을 선언하고, n X 20 크기로 할당한다. 승객이 앉아있으면 해당 위치에 true, 승객이 없으면 fals..

article thumbnail
[프로그래머스] Lv.1 : 소수 만들기 - 자바[Java]

Summer/Winter Coding(~2018) https://school.programmers.co.kr/learn/courses/30/lessons/12977 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 nums에 있는 숫자들 중 서로 다른 3개를 골라야 하며, 더했을 때 소수가 되는지 판별해야 한다. 서로 다른 3개를 고르는 방법은 DFS를 사용하여 조합을 통해 구한다. 그리고 조합으로 구한 수를 모두 더해서 소수가 되는지 함수를 호출해 판별한다. 로직 1. 전역 변수로 조합의 수를 저장하는 comb 배열을 선언하고, 정답을 저장하는 ans..

[프로그래머스] Lv.1 : 3진법 뒤집기 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/68935 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 풀이 숫자(10진법) -> 3진법으로 변환 -> 앞 뒤 반전 -> 3진법을 10진법으로 변환 10진법을 3진법으로 변환할 때는 StringBuilder형 변수 sb를 사용하여 n를 3으로 나눈 나머지를 sb에 추가한다. ..

[프로그래머스] Lv.1 : 약수의 개수와 덧셈 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/77884 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. 풀이 약수의 개수가 홀수인 수는 제곱수이다. left부터 right까지 for문을 사용해서 각 수가 제곱수인지 판별한다. 로직 1. answer을 0으로 초..

article thumbnail
[백준] 2615번 : 오목 - 자바[Java]

https://www.acmicpc.net/problem/2615 2615번: 오목오목은 바둑판에 검은 바둑알과 흰 바둑알을 교대로 놓아서 겨루는 게임이다. 바둑판에는 19개의 가로줄과 19개의 세로줄이 그려져 있는데 가로줄은 위에서부터 아래로 1번, 2번, ... ,19번의 번호www.acmicpc.net풀이바둑판의 상태를 입력받은 후, 검은색 또는 흰색이 이기는지 출력하고 가장 왼쪽에 있는 바둑알의 위치를 출력한다. 로직1. 바둑판의 상태를 입력받는다.2. 이중 for문을 사용하여 바둑판을 왼쪽 위부터 탐색하고, 바둑알이 놓인 위치인 경우 check 함수를 호출하여 오목이 된 경우 검은색이 이겼을 경우에는 1을, 흰색이 이겼을 경우에는 2를 출력한다. 그리고 현재 위치를 출력하고 프로그램을 종료한다...

article thumbnail
[백준] 1874번 : 스택 수열 - 자바[Java]

https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 풀이 스택을 사용하고, 입력받는 숫자를 총 3가지 경우로 나누어 처리한다. 1) 현재 top에 있는 숫자가 입력받은 숫자보다 작으면 그 숫자까지 push하고, 한 번만 pop한다. ex) 4 1 push, 2 push, 3 push, 4 push, 4 pop 2) 현재 top에 있는 숫자가 입력받은 숫자와 같으면 한..

[백준] 1021번 : 회전하는 큐 - 자바[Java]

https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net 나의 풀이 : ArrayList 사용 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTo..

article thumbnail
[백준] 9012번 : 괄호 - 자바[Java]

https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 풀이 대표적인 스택 문제다. '(' 왼쪽 괄호를 만나면 스택에 push하고, ')' 오른쪽 괄호를 만나면 스택을 pop한다. 이 때 ')' 오른쪽 괄호를 만나면 스택을 pop했는데 pop한 문자열이 ( 가 아니라면 올바른 괄호 문자열이 될 수 없다. 로직 1. n을 입력받는다. 2. n번 동안 괄호 문자열을 입력받고 blankStr(str)을 호출하여 올바른 괄호 문..

article thumbnail
[백준] 2468번 : 안전영역 - 자바[Java]

https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 풀이 장마철에 물에 잠기지 않는 안전한 영역의 최대 개수를 계산해야 한다. 비가 내려서 잠기는 높이의 경우의 수마다 BFS를 수행해서 안전한 영역의 최대 개수를 구한다. 로직 1. n을 입력받는다. 2. nxn 크기의 int형 배열 arr을 선언한다. 3. 지역의 높이 정보를 입력받고 arr에 저장한다. 이 때 가장 높은 지점의 높이를 max값에 저장한다. 4. 아무 지점도 잠기지 않으면 안전 영역의 개..