Algorithm/기타
-
[백준 1476번] 날짜 계산 (자바)Algorithm/기타 2022. 6. 27. 19:39
백준알고리즘 1476번 : 날짜 계산 (Solved.ac 난이도 Silver5) https://www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net 숫자 3개를 가지고 날짜를 계산하는 문제이다. N에서 x를 뺀 숫자가 15의 배수, y를 뺀 숫자가 28의 배수, z를 뺀 숫자가 19의 배수가 되는 정답 N을 구하는 문제이다. 예시에 나온 것처럼 1 2 3이 주어지는 경우, 정답 N(5266)은 5266에서 1을 뺀 수가 15의 배수이고, 5266에서 2를 뺀 수가 28..
-
[백준 17264번] I AM IRONMAN (Java 풀이)Algorithm/기타 2020. 3. 8. 15:35
백준알고리즘 17264번 : I AM IRONMAN 해킹을 통해 점수를 올리고자 하는 유저가 있는데, 알아낸 정보와 게임을 통해 IRON 티어에서 벗어날 수 있는지 여부를 확인하는 문제이다. 해킹을 통해 같이하면 무조건 이기거나 지는 사람의 명단, 벗어나기 위한 점수, 승리시 획득 점수, 패배시 감점 점수 와 같은 정보가 주어진다. 나는 HashMap을 이용하여 풀었다. 정보가 주어진 이름과 승패 여부를 HashMap의 Key와 Value에 집어 넣고, 조건에 맞추어, 점수를 깎거나 올려주었다. 소스 ▽ 더보기 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util..
-
[백준 1292번] 쉽게 푸는 문제 (Java 풀이)Algorithm/기타 2020. 2. 28. 20:11
백준알고리즘 1292번 : 쉽게 푸는 문제 1이 한번, 2가 2번... 45가 45번.. 과 같은 방식의 수열의 특정 구간에 대한 합을 구하는 문제이다. 어떻게 해야하나 난처했으나, 일단 시간 제한이 2초이고 구간의 최대 길이가 1000까지이기 때문에 수열을 미리 만들어 놓고 맘 편하게 for문을 돌려도 되겠다 싶었다. 풀이 과정 1. ArrayList를 선언하고, 1000번 동안 값을 집어넣는다. 2. 숫자와 해당 숫자를 집어넣은 횟수가 일치한 경우, 숫자를 올린다. 3. 주어진 구간 동안의 ArrayList의 값을 더하고 출력한다. 소스 ▽ 더보기 import java.util.ArrayList; import java.util.Scanner; public class Main { // 1292번 쉽게 ..
-
[백준 10773번] 제로 (Java 풀이)Algorithm/기타 2020. 2. 27. 18:48
백준알고리즘 10773번 : 제로 등장하는 숫자들의 합을 구하되, 숫자 0이 나오면 가장 최근에 나온 숫자는 합에서 제외하여 총 합을 출력하는 문제이다. 처음에는 0은 바로 방금 전에 나온 숫자만 빼주는 문제인 줄 알았다. 그러니까, 3, 4, 5, 0, 0 과 같은 방식으로 나왔으면, 5는 없어지되, 마지막 0은 정상적으로 더해줘야 되는 값인줄 알았는데 결과적으로 문제는 0의 갯수만큼 가장 최근에 나온 숫자들을 합에서 제외하는 것을 요구한다. 즉 해당 예제의 답은 4와 5를 제외한 3인것이다. 0의 갯수를 Count, 다른 숫자들은 List에 집어 넣은 뒤, LIst에서 0의 갯수만큼을 뺸 길이만 더할까 하다, 이러면 for문이 두번 돌아 시간초과가 발생할 듯 싶어 하나의 for문에서 LIst의 add..
-
[백준 1094번] 막대기 (Java 풀이)Algorithm/기타 2020. 2. 16. 00:38
백준알고리즘 1094번 : 막대기 문제의 설명은 굉장히 복잡한 듯 싶지만, 사실은 64 이하의 숫자를 2진수로 만들었을때, 1의 숫자를 구하는 것과 같다. 왜냐하면 똑같은 길이의 막대가 2개가 쓰일일이 없고, 우리는 막대를 계속 쪼개서 1까지 만들 수 있기 때문이다. 숫자를 2진수로 변환한 뒤, 1의 갯수를 세는 방식도 있지만, 나는 주어진 숫자를 받고 64에서 2씩 나누면서 주어진 숫자보다 더 작은 값이나오면 주어진 숫자를 차감시키는 방식으로 접근했다. 풀이 과정 1. 만들고자 하는 stick의 길이 X를 받는다. 2. stick의 초기 길이(64)에서 반씩 나누어주면서, 길이 X보다 더 작은 값이 나오면 X 값을 해당 숫자만큼 차감시키고, 차감 횟수를 센다. 3. X 값이 0이 나올때까지 진행한 뒤,..
-
[백준 5635번] 생일 (Java 풀이)Algorithm/기타 2020. 2. 5. 22:45
백준알고리즘 5635번 : 생일 나이가 많은 사람부터 순서대로 정렬하는 문제이다. 태어난 연도, 월, 일 세 번을 비교해야 하기 때문에 단순 정렬이 아닌 생년월일과 이름을 필드로 갖는 객체를 만들고, 이 object에 Comparable을 구현(Implements)한다. Comparable interface안에는 int compareTo(T a)라는 단 하나의 interface method만 존재한다. 해당 method는 리턴값을 3가지로 분류하고 있는데, 이는 다음과 같다. 1. parameter보다 더 작은 경우 음수 return. 2. parameter보다 더 큰 경우 양수 return. 3. parameter와 같은 경우 0 return. Birthday라고 명명한 객체안에서 어떤 필드 값을 우선..
-
[백준 11650번] 좌표 정렬하기 (Java 풀이)Algorithm/기타 2020. 1. 28. 22:29
백준알고리즘 11650번 : 좌표 정렬하기 N개의 좌표를 오름차순으로 정렬하는 문제이다. x좌표가 같으면 y좌표를 오름차순으로 정렬해서 출력해야한다. 정렬 조건이 추가되었기 때문에, Arrays.sort()에 Comparator 인터페이스를 재정의해서 사용해야한다. 풀이 과정 1. 2차원 배열에 각 좌표를 담는다. 2. Arrays.sort(arr, new Comparator){}로 Comparator를 재정의함으로써 'x축 값이 같다면, y축 값을 비교해준다.'라는 조건식을 추가해주어 return하도록 한다. 3. 정렬된 배열을 출력한다. 소스 ▽ 더보기 import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; pub..
-
[백준 1427번] 소트인사이드 (Java 풀이)Algorithm/기타 2020. 1. 27. 01:27
백준알고리즘 1427번 : 소트인사이드 길이가 몹시 길수도 있는 숫자를 받아, 이를 내림차순으로 정렬하는 문제이다. 어차피 숫자만 받기때문에, String값으로 받은 뒤, split하고 해당 배열을 sort했다. 내림차순으로 sort해야하기 때문에 Arrays.sort(arr, Comparator.reverseOrder())를 이용하여 역순으로 정렬시켰다. 풀이 과정 1. 숫자를 받아, 이를 split하여 String 배열으로 만든다. 2. String 배열을 역순으로 정렬하고 출력한다. 소스 ▽ 더보기 import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; public class Main {// 1427번 소트 인사..