알고리즘
[Softeer]장애물 인식 프로그램 - Java
문제 https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=409 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 풀이 흔히 볼 수 있는 dfs 문제! 포인트는 블록의 개수를 세어줘야 하는데 언제 count++를 해줄 것인지 블록에 포함된 장애물의 개수를 어떻게 세서 어떻게 정렬해서 출력할 것인지 얘네만 생각하면서 풀면 쉽게 풀 수 있을 걸???? 자세한 건 주석으로!! 코드 // Softeer - 장애물 인식 프로그램 // https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=409 import java.util.*; import java.io.*; public c..
[Softeer]지도 자동 구축 - Java
문제 https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=413 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 풀이 이 문제도 그냥 수학적 사고를 필요로 하는 문제인 것 같다. 다른 트릭? 같은건 없고 그냥 점화식을 잘 세워보던가 규칙을 찾아보던가 편하게 풀 수 있는 문제임!! 코드 // Softeer - 지도 자동 구축 // https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=413 import java.io.IOException; import java.util.Scanner; public class Softeer_Num413_지도자동구축 { public st..
[Softeer]바이러스 - Java
문제 https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=407 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 풀이 특별한 알고리즘 문제가 아니라 수학적인 사고를 보는 문제인 것 같다! Softeer에 다른 문제들도 어떤 유형인지 흘끔흘끔 봤는데 이런 수학적 사고를 요하는 문제들도 꽤 있는 것 같다! 문제의 조건을 잘 보고 풀어야 한다. 그냥 평소처럼 풀면 무조건 시간 초과나, overflow가 일어나기 때문에 타입이나, 푸는 방식에 주의하며 문제를 해결해야 할 듯 하다!!! 그냥 전체 결과를 다 계산한 다음에 1000000007로 mod 연산을 하면 overflow가 나기 때문에 제곱을 한번 할 때마다 mod 연..
[Softeer]회의실 예약 - Java
문제 https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=626 풀이 처음 풀어보는 현대 문제임!! 별 두개라 그냥 쉽게 풀 수 있을 줄 알았는데, 생각보다 어려워서 오래 걸렸다리,,,, 아니 이게 별 두개라고,,,??? 진짜 나는 한참 멀었다 ㅠ 후우우우ㅜㅜ우ㅜ 암튼 포인트는 출력할 때 사전순으로 회의실 정보를 출력해야 되는 것 회의실 사용 가능 시간을 체크할 방식을 찾는 법 -> 나는 시간대 만큼의 크기를 가진 배열을 만들어줘서 체크했음! 그리고 출력할 때 형식을 맞춰줘야 되어서 여간 귀찮은게 아니었다! 자세한건 코드에다가 주석으로 달아놨음!! 코드 // Softeer - [21년 재직자 대회 예선] 회의실 예약 // https://softeer...
[프로그래머스]크레인 인형뽑기 게임 - Java
문제 https://programmers.co.kr/learn/courses/30/lessons/64061?language=java 풀이 레벨 1 문제라 쉽게 풀었음 board[][]를 ArrayList랑 Stack으로 구현해도 될 것 같긴한데 그냥 배열로 해주는게 오히려 더 간편한 듯? 바구니는 쉽게 Stack을 사용했음! 코드보면 쉽게 이해할 수 있을거임 ㅎㅎ ㄱㄱ 코드 // 코딩테스트 연습 - 2019 카카오 개발자 겨울 인턴십 - 크레인 인형뽑기 게임 // https://programmers.co.kr/learn/courses/30/lessons/64061?language=java package PROGRAMMERS.level1; import java.util.Stack; public class ..
[백준]17073번 나무 위의 빗물 - Java
문제 https://www.acmicpc.net/problem/17073 17073번: 나무 위의 빗물 첫째 줄에 트리의 노드의 수 N과 1번 노드에 고인 물의 양을 의미하는 정수 W가 주어진다. (2 ≤ N ≤ 500,000, 1 ≤ W ≤ 109) 다음 N-1줄에 걸쳐, 트리에 존재하는 간선의 정보가 U V의 형태로 주어진다 www.acmicpc.net 풀이 처음엔 무슨 소린가 했는데 결국 리프 노드(자식이 없는 노드)의 수로 총 빗물의 양을 나눠주면 답이다! 그러므로 리프 노드를 어떻게 판별할지가 포인트인데, 트리에선 자신과 연결된 노드가 하나밖에 없는 경우가 리프 노드이다. (2개 이상이 연결되어 있으면 자식 노드가 존재하는 것이니까) 이 점을 이용하여 풀었다. 자세한건 주석으로! 코드 // 17..
[백준]2502번 떡 먹는 호랑이 - Java
문제 https://www.acmicpc.net/problem/2502 2502번: 떡 먹는 호랑이 첫줄에 첫 날에 준 떡의 개수 A를 출력하고 그 다음 둘째 줄에는 둘째 날에 준 떡의 개수 B를 출력한다. 이 문제에서 주어진 D, K에 대해서는 항상 정수 A, B (1≤ A ≤ B)가 존재한다. www.acmicpc.net 풀이 피보나치 수열을 응용한 문제임 피보나치나 뭐 파도반 수열인가 이런거처럼 메모리가 초과될 위험이 있을 것 같다? 그럼 문제의 조건이나 문제를 잘 읽어서 대충이라도 시간복잡도를 계산해보고 괜찮겠다 싶으면 해야된다. 안 괜찮으면 DP 등으로 풀어야 됨. 이 문제는 순열에다가 피보나치 수열이라서 가지치기와 DP로 어떻게 푸냐가 포인트임! 3
[백준]4179번 불! - Java
문제 https://www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문 www.acmicpc.net 풀이 며칠 전에 푼 '탈출'이라는 문제랑 완전 비슷하다!!! https://seokmimmmmmmmm.tistory.com/123 [백준]3055번 탈출 - Java 문제 https://www.acmicpc.net/problem/3055 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 ..