전체 글 90

[SWEA] Test샘플문제 - (dfs) 1767번 프로세서 연결하기 문제

휴...끝 아직 dfs, bfs관련해 풀수 있는 조금이라도 응용된 문제가 나오면 바로 못푼다 문제를 단순하게 생각해보고, 과정을 고민해보다 다른 사람의 풀이,코드를 보고 (사실 보고도 다 이해는 안갔었다..어느정도 이해해놓고 직접 코드를 안보고 짜보는 과정에서야 비로소 이해가 되었다..) 그 다음부터는 최대한 혼자 풀었다 첨엔 막막하고 그랬는데 풀어보고 나니 그래도 많이 도움이 된 느낌..굿 최대한 많은 core를 연결을 하는데, 같은 core수가 나오는 경우가 여러개라면 그중 최소의 전선길이를 출력하는 문제. 크게 dfs / 방향대로 전선을 놓을 수 있는지 확인하는 함수 / 방향대로 전선을 놓는 함수 이렇게 기능을 나누었다 1. 입력받은 멕시노스의 초기상태에서 1로 표시된, core의 위치(x,y)를 ..

[SWEA] D2 - 1204번 최빈수 구하기 문제

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV13zo1KAAACFAYh SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 설명은 생략.. package D2; import java.io.*; import java.util.StringTokenizer; public class SW_1204 { //최빈수 구하기 문제 public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamR..

[SWEA] D2 - 1954번 달팽이 문제

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5PobmqAPoDFAUq&categoryId=AV5PobmqAPoDFAUq&categoryType=CODE&problemTitle=&orderBy=RECOMMEND_COUNT&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=1 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 2차원 배열에 달팽이 등껍질 모양처럼 1부터 N*N까지의 수를 나선형을 돌듯이 채워 이를 출력하는 문제이다. 오른쪽, 아래, 왼..

[SW Expert Academy] 1244번 - 최대 상금 문제(시간초과 미해결..)

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15Khn6AN0CFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 정해진 횟수만큼 숫자들의 위치를 교환했을때 나올 수 있는 가장 큰 수를 구하면 되는 문제이다. 그리디 알고리즘 식으로 풀어야 하나..어떻게 해야 정해진 횟수만큼 교환시켰을때 최대한 큰 수가 나오게 할 수 있을까 고민되었다 어떻게 풀어야 할지 막막해서 댓글을 자세히 보지는 않았고 살짝 들여다보았다. 그리디 알고리즘으로 풀기는 어려운 모양이다.. 딱 떠오르는 좋은 방법은 없지만 우선 최선을 다해 일단 ..

[백준알고리즘] 브루트포스 - 2635번 수 이어가기 문제

https://www.acmicpc.net/problem/2635 2635번: 수 이어가기 첫 번째 수가 주어진다. 이 수는 30,000 보다 같거나 작은 양의 정수이다. www.acmicpc.net 주어지는 첫번째 수의 최대 크기가 30000이기 때문에 브루트포스로 다 해봐도 30000을 넘지 않는다 (그 이상의 수까지 볼 필요가 없는게, 우리는 나올수 있는 가장 긴 수를 구해야 하기 때문에 두번째로 올 수가 첫번째로 오는 수보다 더 클 필요가 없다..그러면 바로 처음부터 음수값이 나올것이기 때문에) 두번째로 올 수를 0부터 첫번째로 오는 수(N이라고 하겠음)까지 봐가면서 (이때 내가 비교문을 잘못해놔서 첨에 틀렸습니다 떴었다.. i

[백준알고리즘] 구현 - 2669번 직사각형 네개의 면적 구하기 문제

https://www.acmicpc.net/problem/2669 2669번: 직사각형 네개의 합집합의 면적 구하기 입력은 네 줄이며, 각 줄은 직사각형의 위치를 나타내는 네 개의 정수로 주어진다. 첫 번째와 두 번째의 정수는 사각형의 왼쪽 아래 꼭짓점의 x좌표, y좌표이고 세 번째와 네 번째의 정수는 사각 www.acmicpc.net 아오!!!!!!!!!!현타와.. 처음에 문제보고 사각형들이 겹치는 부분들을 어떻게 다 빼지..겹치는지 아닌지 판단하는 코드 어떻게 짜지.. 한번만 겹치는것도 아니고 네개가 다 뭉쳐있으면 그걸 어떻게 일일히 다 뺴지.... 막 막 고민하다가 미치겠어서(브론즈 문제라 더 미치는줄알았음) 결국 힌트만 얻어갈까 하고 찾아봤는데 걍 2차원 배열로 풀면 끝나는 문제였다 100x100..

알고리즘/구현 2023.04.26

[백준알고리즘] 그래프(bfs) - 13549번 숨바꼭질3 문제(다시해볼예정)

https://www.acmicpc.net/problem/13549 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 흠..^^이전에 풀었던 숨바꼭질 문제에서 조금만 바꾸면 될줄 알았는데 초반에서 틀렸습니다가 뜨네.. 하긴 이번에는 가중치가 다르기 때문에 bfs로 최초로 방문한 경로가 꼭 최단시간 경로라는 보장은 없긴 하겠다 (근데 그러면 Bfs로 푸는 의미가 있나..??) 반례를 생각을 못하겠다.....웬만한 다른사람이 올린 반례 이것저것 넣어봐도... 잘 되는것 같은데.. 순..

[백준알고리즘] 그래프(bfs) - 13913번 숨바꼭질4 문제

https://www.acmicpc.net/problem/13913 13913번: 숨바꼭질 4 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 전에 풀어봤던 숨바꼭질 문제와 거의 유사하지만 다른점이 하나 있다면 이번 문제에서는 최단 경로로 거쳐온 각각의 노드들을 표시해야한다는 점이다. 강의에서는 역추적을 하라고 했던것같은데..방법이 잘 안떠올라 다시 강의를 봤다 아 각각의 모든 수들이 어디서 건너왔는지를 기록하는 배열을 만들면 되는구나(from[]) 원하는 값만 담은 리스트를 만들어야 한다는 사고에 갇혀..

[백준알고리즘] 그래프(bfs) - 1697번 숨바꼭질 문제(수정한부분있음)

https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 아직 dfs / bfs에 익숙하지 않아서 그런지 두 탐색법을 응용해 문제를 푸는게 아직은 쉽지가 않다. 이걸 왜 bfs로 풀어야 하는지조차 첨엔 의문이었다ㅎㅎ bfs는 모든 가중치가 1일때 최단경로를 구하기 적합한 방법이라고 한다 (가중치값이 다 다르면 bfs가 무용지물일테니까) 한번 방문했던 곳을 왜 또 가면 안된다는건지도 이해가 안갔다. 더 좋은 경로가 더 뒤에서 나..

[SWEA] 1234번 - 비밀번호 문제

https://swexpertacademy.com/main/solvingProblem/solvingProblem.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 스택으로 풀면 좋을것같아서 스택으로 풀어보았다 연속되는 값들을 소거하면 되니까 스택에서 peek한 값과 입력값의 한 문자씩을 비교하며 같으면 pop하고 Push는 생략, 다르다면 그냥 Push하도록 한다 그러면 스택에 남은 값들이 비밀번호가 될 텐데 스택에서 하나씩 출력하면 역순이 되므로 StringBuilder를 이용해 reverse함수를 이용해 다시 순서대로 해준다 풀이코드 package D3; import java.io.*; import ja..