본문 바로가기

전체 글

(118)
[JAVA-D3] SWEA 6808 - 규영이와 인영이의 카드게임 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com ✅ 문제 요약규영이는 고정적인 순서로 카드를 내고 인영이는 9! 경우의 수 순서대로 카드를 낼 때두 사람의 최종적인 카드 점수 합을 비교하여 규영이가 이기는 경우의 수와 지는 경우의 수를 출력하라 🤔 문제 접근규영이가  갖게될 카드가 입력으로 주어지기 때문에 크기 19인 (1부터 18까지를 위함) boolean 배열을 만들어9가지 수를 입력 받을 때 boolean배열[해당수] = true 를 해주며 규영이의 카드 배열 gnum에 저장하고이후 false인 수들이 인영이의 카드 이므로 크기 9의 inum 배열에 넣어두었다. 재귀 호출을..
[JAVA-D3] SWEA 1493 - 수의 새로운 연산 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 🤔 문제 풀이 느낌상 별다른 알고리즘이 필요한 문제는 아니고 빡구현 문제였던거 같다. 1사분면내에서 대각선으로 수가 커지기 때문에 규칙성을 잘 파악해야했다. 대각선으로 증가하는 수들을 어떻게 저장할까 고민하다가, 시간이 오래 걸릴 것을 우려하여 수 전체를 저장하지 않고 x=1인 라인의 y값들을 ylist에 저장해놓기로 했다. 보면 알겠지만 x=1 라인의 경우 초기(value) 1, 증가 값 (addict) 0 이라고 할 때 value = value + (addict++) 이라는 규칙을 발견할 수 있다. (1+0, 1+1, 2+2, 4+3 ...) 주어지는 p와 q..
JAVA - JSON(String) to JSON : JSONObject 이 글은 Java Spring 및 Riot API를 사용해 '리그오브레전드 전적 검색 토이 프로젝트'를 하며 마주했던 문제점, 힘들었던 점들을 해결한 것에 대한 회고이다. 🤔 문제점 Riot API의 MATCH-V5를 통해 내 계정의 게임 전적에 대한 MATCH-ID 값들을 받았고 이 ID값들로 다시금 HttpRequest GET 쿼리를 날려 HttpResponse로 받았고 내가 원하는 각각의 매칭 게임의 세부 데이터들을 꺼내오기 위해 httpresponse.body()를 사용하여 String 형식의 JSON 데이터를 가져올 수 있었다. 이게 무슨 말이냐 하면 JSON데이터가 쌍따옴표로 둘러쌓인 "JSON" 인 것이다. 요 String 데이터 내에 있는 데이터들을 정규표현식을 사용해서 뽑아올까 싶었지만 ..
[D4-JAVA] SWEA 1238 - Contact SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com ✅ 문제 요약 시작노드에서부터 탐색을 시작하여 가장 깊은 노드를 찾고 만약 깊이가 같다면 노드의 번호가 더 큰 것을 출력하라 🤔 문제 접근 어렵지 않은 문제였으나 문제를 제대로 읽지 않아서 중간에 살짝 헤맸던 문제다. 항상 문제와 주어지는 조건을 잘 읽은 뒤 문제를 풀도록 해야겠다. (매번 이런 생각을 하지만 풀이법이 떠오르면 바로 코드부터 치고자 해서 잘 지켜지지 않는다..) 지금까지 풀어오던 그래프 문제와 다르게 정점 연결 정보를 특이하게 준다. 하지만 어려울거 없다. 정점 연결 정보는 항상 시작과 끝, 2가지가 한 쌍으로 주어지므로 각 테스트 케이스 별로 주..
[D4-JAVA] SWEA 1210 - ladder SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com ✅ 문제 요약 흔히 우리가 평소에 하는 사다리 게임이라고 생각하면 된다. 100 x 100인 2차원 배열에서 y(행) = 99 이며 그 값이 2인 도착점으로 갈 수 있는 y(행) = 0 이며 그 값이 1인 시작점을 찾는 문제다. 🤔문제 접근 처음 문제를 풀 때 배열의 값을 입력받으며 만약 y=99이고 그 값이 2인 경우 x.y좌표를 저장해놓고 도착지에서 역순으로 시작점을 찾도록 코드를 짰다. 도착지에서 왼쪽(x-1), 오른쪽(x+1)의 값이 1이라면 더이상 1이 나오지 않을 때까지 왼쪽, 오른쪽으로 전진했으며 아닐 경우 y-1을 해주어 위로 전진하도록 했다. 되게..
[Silver4-JAVA] 백준 10610 - 30 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 🤔 문제 접근 처음에는 양수 N을 문자열로 받은 뒤 백트래킹을 통해 숫자들의 위치를 바꿔가며 30의 배수를 찾고자 했다. 하지만 숫자들을 몇번 바꾸어줘야할지에 대한 상한선을 설정하는 것이 힘들었고 숫자의 길이가 길어지면 길어질 수록 시간 복잡도가 증가하는 문제가 있었다. 해당 문제를 풀기 위해서는 수학적 지식이 조금 필요한 것 같다. 먼저 30의 배수가 되기 위해서는 주어진 양수 N에 반드시 0이 1개 이상 존재해야한다. 또한 30의 배수인 30, 60, 90, 1..
[D2-JAVA] SWEA - 백만장자 프로젝트 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com ✅ 문제 요약 물건을 팔았을 때의 최대 이익 구하기 🤔 문제 접근 처음 문제를 봤을 때는 각 매매가를 우선순위 큐에 내림차순으로 저장하고 매매가의 앞에서부터 진행하여 만약 최대값(큐.poll() 한 값) 에 도달하면 (최대값 전의 매매가격 수 * 최대값) - (최대값 이전의 매매가격 누적합) 을 통해 문제를 풀고자 했다. 매매가 배열에서 인덱스가 최대값에 도달했다면 다시금 큐에서 poll하여 위 과정을 반복하도록 했지만 푸는 것에 실패했다. 더욱 간단한 방법이 있었으니, 매매가 배열의 뒤에서부터 시작하여 만약 현재 매매가가 max매매가보다 작다면 sum에 더해주고..
[Gold4-JAVA] 백준 1647 - 도시 분할 계획 https://www.acmicpc.net/problem/1647 1647번: 도시 분할 계획 첫째 줄에 집의 개수 N, 길의 개수 M이 주어진다. N은 2이상 100,000이하인 정수이고, M은 1이상 1,000,000이하인 정수이다. 그 다음 줄부터 M줄에 걸쳐 길의 정보가 A B C 세 개의 정수로 주어지는데 A번 www.acmicpc.net ✅ 문제 요약 정점(집)과 간선(길)로 연결된 마을을 둘로 분리할 것인데 각 마을에서의 집들의 거리를 최소로 하고 싶다. 🛠️ 사용한 알고리즘 최소 스패닝 트리 - 크루스칼 알고리즘 🤔 문제 접근 처음 문제를 보고 어떻게 마을을 둘로 나눌 것인가 고민했다. 집 N개의 A마을, 집 M개의 B마을로 나누어 각각의 마을의 집들 사이의 최소 거리를 구해 완전 탐색으로..

반응형