java
-
[백준 11721번] 열 개씩 끊어 출력하기Algorithm/기타 2019. 12. 15. 15:17
백준알고리즘 11721번 : 열 개씩 끊어 출력하기 substring을 연습하기 좋은 문제인 것 같다. 단어를 받은 뒤, '10개씩 끊어서 출력, 남은 문자열 저장' 이를 수행하는 반복문을 만들면 된다. 풀이 과정 1. substring(int 0, int 10)을 이용하여 [0번째 문자부터 (10-0)개의 문자를 출력한다.] 2. String str = str.substring(int 10)을 이용하여 앞의 10개 문자를 제외한 남은 문자열을 저장한다. 3. while문을 통해 문자열 길이가 10이 넘기전까지 1, 2번 과정을 반복하고, 남은 문자열을 출력한다. 소스 ▽ 더보기 import java.util.Scanner; public class Main {// 11721번 열 개씩 끊어 출력하기 pu..
-
[백준 1924번] 2007년Algorithm/기타 2019. 12. 15. 14:52
백준알고리즘 1924번 : 2007년 먼저 input값으로 들어올 날짜가 2007년의 몇번째 날인지를 구한다. 1월 1일은 첫째날, 12월 31일은 365번째 날.. 이런식으로 구해준 다음, 7로 나눴을때의 나머지가 몇이 되느냐에 따라 구분해서 요일을 출력해주면 된다. 풀이 과정 1. while문과 switch-case문을 통해 받아온 달의 전 달까지의 일수를 더해준다. 2. 추가로 받아온 일수를 더해주어 전체 일수를 count한다. 3. 7로 나눈 나머지 값에 따라 요일을 지정하고, 이를 출력한다. (1월 1일은 전체 일 수가 1이고, 월요일이므로 "MON" 출력), 소스 ▽ 더보기 import java.util.Scanner; public class Main {// 11721번 열 개씩 끊어 출력하기..
-
[백준 10250번] ACM 호텔Algorithm/기타 2019. 12. 11. 20:53
백준알고리즘 10250번 : ACM 호텔 층별로 먼저 사람을 쌓았더라면 이해가 좀 더 쉬웠으련만, 호수별로, 즉 세로로 사람을 쌓다보니 머리가 잘 돌아가지 않았다. 호텔의 층, 층별 호실 수, 들어오는 사람의 순서 이렇게 3개를 받아서 해당 인원이 들어가야 할 적절한 호실을 출력하는 문제이다. 예를 들어 4, 5, 20인 경우, 층별로 5개의 호실을 갖고있는 4층 호텔에서 20번째 사람이 들어갈 적합한 호실은 405호가 되며. 다음으로 4, 5, 19인 경우, 층별로 5개의 호실을 갖고있는 4층 호텔에서 19번째 사람이 들어갈 적합한 호실을 404호가 된다. 배정 호실의 호수(가로 길이)가 10보다 작을 때는 0을 붙인다거나 하는 디테일만 더하면 어렵지 않게 풀 수 있다. 그리고, 문제를 풀고나니, 받는..
-
[백준 4153번] 직각삼각형Algorithm/기타 2019. 12. 8. 23:40
백준알고리즘 4153번 : 직각삼각형 대각선, 가로, 세로 3개의 값을 받아서, "가장 큰 값의 제곱이 작은 두 값의 제곱의 합과 같은가?" 라는 조건문 충족 여부에 따라 'right'나 'wrong'을 출력하면 되는 문제이다. 주의 사항이라고 한다면, 1. 일반적인 문제와는 달리 테스트 케이스의 갯수가 주어지지 않고, 0 0 0이 나올때 입력이 종료되는 점, 2. 그리고 오름차순으로만 입력을 받지는 않기 때문에 정렬을 해줘야 한다는 점이다. (예제에서는 오름차순으로 출력해주길래 그런 줄 알았더니 아니였다.. 문제에 나온 조건대로만 풀어야겠다.) 풀이 과정 1. while문을 이용하여, 0이 들어오면 입력 받기를 중단하도록 한다. 2. 배열로 3개의 값을 받는다. 3. 배열을 오름차순(or 내림차순)으로..
-
[백준 1546번] 평균Algorithm/기타 2019. 12. 7. 15:23
백준알고리즘 1546번 : 평균 출력에대한 설명에서 알 수 있듯, 정확히 일치하는 값을 요구하는 문제가 아니다. 10의 -2승까지의 오차를 허용한다고 서술되어있으니, 0의 갯수라던지, 소수점 0.6666이든 0.666666이든 정답으로 취급하는 것이다. 따라서 많이 어렵지 않은 문제가 되었다. 또한, 새로운 평균을 구하는 방식이 꽤나 복잡해보이지만, 생각해보면 간단하다. 결국 새로운 평균을 구하는 공식은 다음과 같다. (각 점수들의 합 sum X 100) / ( 최대 점수 max X 시험본 과목의 갯수 count) 풀이 과정 1. 최대 점수를 구하기 위해서, 배열에 과목의 점수를 넣는 동시에 최대 값(max)을 차출한다. 2. 이와 동시에 각 값들의 합(sumAll)을 구해준다. 3. (sumAll * ..
-
[백준 17826번] 나의 학점은?Algorithm/기타 2019. 12. 3. 21:44
백준알고리즘 17826번 : 나의 학점은? 50명의 점수를 배열에 담은 뒤, 홍익이의 점수가 일치하는 순서의 등수를 출력하면된다. 각 점수들이 내림차순으로 입력받아지고, 동점인 경우는 없기 때문에 이렇다 할 변수는 없는 문제인 것 같다. 홍익이의 점수를 먼저 알려줬으면 반복문을 한번만 돌려도 됐을텐데 싶긴하다 ㅎ 풀이 과정 1. 정수형 배열을 선언한 뒤, for문을 통해 입력받은 값을 담는다. 2. 홍익이의 점수를 정수형 변수에 담고, for문으로 배열의 몇 번째 값이 홍익이의 점수인지 찾는다. 3. 조건문을 통해 각 등수에 대한 학점을 출력해준다. 소스 ▽ 더보기 import java.util.Scanner; public class Main {// 17826번, 나의 학점은? public static ..
-
[백준 2869번] 달팽이는 올라가고 싶다Algorithm/기타 2019. 11. 30. 17:50
백준알고리즘 2869번 : 달팽이는 올라가고 싶다 시간제한이 0.15초이기 떄문에, 그리고 올라가야하는 나무 막대의 길이가 최대 10억이기 때문에 일일히 더해가면서 조건문으로 '지금 달팽이가 올라간 길이가 나무 막대의 길이보다 크거나 같은가?' 라는 식으로 풀면 시간 초과가 날 것으로 생각했다. 그래서 마지막의 전날에 꼭대기까지 올라갈 수 있는 길이를 정의하고, 여기에 1을 더해줌으로써 꼭대기까지 올라가기 위해 필요한 횟수를 정할 수 있었다. 또한, 올라가는 길이 A, 내려가는 길이 B, 총 길이 V가 같을 수도 있기 때문에, 이런 예외 상황도 처리가 필요했다. "절대 올라가지 못한다면 0으로 표시하시오" 와 같은 조건이 없기때문에, 올라가는 길이 A와 B가 같은 상황이라면, 총 길이 V는 A보다 작거나..
-
[백준 2798번] 블랙잭Algorithm/기타 2019. 11. 28. 22:26
백준알고리즘 2798번 : 블랙잭 배열에 3중 for문을 돌리고, break에 label을 이용하여 소요 시간을 줄이려고했으나, 그것은 다양한 경우의 수를 생각하지 못한 나의 불찰이었다. 따라서 나는 배열을 정렬하는 등의 헛짓을 했지만, 굳이 안해도 되겠다. 단순히 3중 for문을 이용하여, 모든 경우의 수를 돌려보면 된다..! 풀이 과정 1. 각 카드의 숫자들을 배열에 집어넣고, 3중 for문을 통해 이를 각각 뽑을 수 있도록 한다. 2. 미리 설정해둔 int 변수 T의 값을 조건문에 따라 바꿔준다. 조건문 : (arr[i]+arr[i2]+arr[i3]T) → 3장의 합이 딜러의 숫자 M보다 작거나 같고 && 기존 T보다 는 큰 경우 3. T를 출력한다. 소스 ▽ 더보기 import java.util...