Seren dev's blog
article thumbnail
[백준] 9184번 : 신나는 함수 실행 - 자바[Java]
Algorithm 문제 풀이/백준 2022. 10. 25. 23:46

https://www.acmicpc.net/problem/9184 9184번: 신나는 함수 실행입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다.www.acmicpc.net풀이반복적인 재귀 호출을 방지하기 위해, w(a, b, c)의 반환값을 저장하는 3차원 dp 배열을 사용한다.이 때 -50 ≤ a, b, c ≤ 50 이므로, 인덱스를 0부터 100까지 사용하기 위해 배열의 크기를 101x101x101만큼 할당하여 w(a, b, c)의 반환값을 dp[a+50][b+50][c+50]에 저장한다.  로직1. int형 3차원 배열 dp를 선언하고, 크기를 101x101x101만..

article thumbnail
[백준] 1932번 : 정수 삼각형 - 자바[Java]
Algorithm 문제 풀이/백준 2022. 10. 24. 22:20

https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 풀이 맨 위층부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로에 있는 수의 합을 구해야 한다. 아래층으로 내려올 때, 아래층에 있는 수에서 위층의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다. 즉, 현재 위치를 기준으로 위층의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중 최댓값을 선택하여 그 수와 현재 위치의 수를 더한 값을 현재 위치의 배열에 저장하면 된다. 예시) 7 3 8..

article thumbnail
[프로그래머스] Lv.2 : 게임 맵 최단거리 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 캐릭터가 상대 팀 진영에 도착하기 위해서 지나가야 하는 칸의 개수의 최솟값을 구해야 하므로 BFS를 사용한다. BFS 시작 위치는 캐릭터의 시작 위치와 같다. maps는 0과 1로만 이루어져 있으며 0은 벽이 있는 자리, 1은 벽이 없는 자리를 나타낸다. 캐릭터의 방문 여부를 나타내기 위해, 캐릭터가 방문한 칸은 maps에서 2 이상의 값으로 나타낸다. 즉, maps[x][y]는 (x, y)좌..

article thumbnail
[프로그래머스] Lv.1 : 모의고사 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/42840 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 시험 문제의 정답이 주어졌을 때, 1번, 2번, 3번 수포자의 점수를 구한 다음 높은 점수를 받은 수포자의 번호를 구해야 하며, 여러 명인 경우 오름차순으로 정렬하여 출력해야 한다. 1번, 2번, 3번 수포자의 점수를 구하는 로직은 따로 함수를 작성하여 구현하고, 구한 점수를 score 배열에 저장한다. 점수의 최댓값을 구한 후 그 최댓값을 가진 번호를 ArrayList에 저장한 다음 이 A..

article thumbnail
[백준] 14503번 : 로봇 청소기 - 자바[Java]
Algorithm 문제 풀이/백준 2022. 10. 17. 00:30

https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 풀이 문제에서 주어진 대로 로봇 청소기의 동작을 구현하면 된다. 로직 1. static 변수로 n, m, cnt, room, dr, dc를 선언한다. cnt는 로봇 청소기가 청소하는 칸의 개수로 정답을 의미한다. room은 청소하는 영역의 상태 정보를 저장하는 2차원 배열로, 아직 청소하지 않은 경우에는 0, 벽인 경우에는 1, 청소한 경우에는 2를 저장한다. 1차원 배열 dr과 dc는 방향 배..

article thumbnail
[백준] 14501번 : 퇴사 - 자바[Java]
Algorithm 문제 풀이/백준 2022. 10. 16. 22:16

https://www.acmicpc.net/problem/14501 14501번: 퇴사첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다.www.acmicpc.net풀이상담을 할 수 있는 가능한 모든 경우를 구한 다음 그 중에서 최대 수익을 구해야 한다. 예시를 들어 설명하겠다. 먼저 1일에 상담을 한다고 가정했을 경우(현재 수익 10), 2, 3일은 할 수 없으므로 4일로 넘어간다. 4일에 상담을 한다고 가정하면(현재 수익 30), 5일로 넘어가고 또 이때 5일에 상담을 한다고 가정하면(현재 수익 45), 7일로 넘어간다. 7일에는 상담을 할 수 없으므로 총 수익은 45가 된다.총 수익을 구한 다음 가장 최근 분기였던 5일째로 돌아간다. 5일에 상담을 하지 않는다고 가정하면(현재 수익 30), 6일..

article thumbnail
[프로그래머스] Lv.1 : 두 개 뽑아서 더하기 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/68644 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 numbers의 길이는 2 이상 100 이하이므로 이중 for문을 사용하여 두 개의 수를 더한 수를 ArrayList에 추가한다. Set이 아닌 ArrayList에 추가하는 이유는 이후 오름차순으로 배열에 저장해야 하기 때문에 Collections.sort() 메서드를 사용하기 위함이다. 로직 1. List list를 선언한다. 2. 이중 for문을 사용하여 두 개의 수를 뽑는다. 3. 뽑은..

article thumbnail
[백준] 1969번 : DNA - 자바[Java]

https://www.acmicpc.net/problem/1969 1969번: DNA DNA란 어떤 유전물질을 구성하는 분자이다. 이 DNA는 서로 다른 4가지의 뉴클레오티드로 이루어져 있다(Adenine, Thymine, Guanine, Cytosine). 우리는 어떤 DNA의 물질을 표현할 때, 이 DNA를 이루는 뉴클레오 www.acmicpc.net 풀이 입력으로 들어온 모든 DNA와 Hamming Distance의 합이 가장 작은 DNA 를 출력해야 한다. 뉴클레오티드는 총 4가지이므로, 입력으로 들어온 n개의 DNA의 각 자리에 있는 글자들을 비교하여, Hamming Distance의 합이 가장 작은 뉴클레오티드를 찾으면 된다. 로직 1. n과 m을 입력받는다. 2. 입력으로 들어오는 DNA 문..

article thumbnail
[프로그래머스] Lv.2 : [1차] 캐시 - 자바[Java]

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 캐시 지도개발팀에서 근무하는 제이지는 지도에서 도시 이름을 검색하면 해당 도시와 관련된 맛집 게시물들을 데이터베이스에서 읽어 보여주는 서비스를 개발하고 있다. 이 프로그램의 테스팅 업무를 담당하고 있는 어피치는 서비스를 오픈하기 전 각 로직에 대한 성능 측정을 수행하였는데, 제이지가 작성한 부분 중 데이터베이스에서 게시물을 가져오는 부분의 실행시간이 너무 오래 걸린다는 것을 알게 되었다. 어피치는 제이지에게 해당 로직을 개선하라고 닦달하기 시작하였고, 제이지는 DB 캐시를 적용하여 성능 개선을 시도..

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를 출력하면 된다. ..