망나니 AWOS의 일상
article thumbnail
[java] 백준 1964번 오각형, 오각형, 오각형…
알고리즘/백준 2021. 8. 13. 22:07

간단하게 표로 설명하겠다. (공책에 끄적였으나 보기가 매우 불편합니다.) 오각형의 단계와 점의 개수로 표에 값을 넣어봤다. 단계 1 2 3 4 5 점의 개수 5 5+7 5+7+10 5+7+10+13 5+7+10+13+16 표에서 보면 어떠한 규칙이 있다. 기존에 점의 개수를 두고 추가적으로 더해지는데 1단계 5, 2단계 7 3단계부터는 10 4단계 13 5단계 16 3단계부터는 등차수열 즉, 3씩 증가한다. 등차수열을 생각하고 코드를 짜면 된다. import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(Syste..

article thumbnail
[java] 백준 2506번 점수계산
알고리즘/백준 2021. 8. 12. 23:54

문제 요약 답을 틀리다가 답이 맞으면 처음 문제는 1점으로 계산 연속으로 문제를 맞히게 되면 두 번째 문제는 2점, 세 번째 문제는 3점으로 계산 예제 입력이 아래와 같이 들어왔을 때 10 1 1 1 1 1 1 1 1 1 1 첫번째 문제부터 마지막 문제(10번)까지 다 맞았기 때문에 점수는 아래와 같이 된다. 1 2 3 4 5 6 7 8 9 10 맞은 문제를 누적시켜서 더하게 되면 총점은 55점이 되는 것이다. 이해가 안 된다면 추가적으로 예제를 더 보여주겠다. 10 1 0 0 0 1 1 1 1 0 0 1 0 0 0 1 2 3 4 0 0 총점 = (1+1+2+3+4) = 11 이 출력으로 나오게 된다. 이제 감이 잡혔으면 코드를 보자. 문제의 개수 N을 입력받고 N개의 문제의 채점 결과를 나타내는 0, ..

article thumbnail
[java] 백준 2501번 약수 구하기
알고리즘/백준 2021. 8. 11. 17:38

문제 요약 자연수 N과 K가 주어졌을 때, N의 약수 중 K번째로 작은 수 출력 N의 약수의 개수가 K보다 적어서 K번째 약수가 없을 경우 0 출력 예제 입/출력 1을 보자. 6과 3이 주어졌다면 6의 약수는 1, 2, 3, 6이다. 3번째로 작은 수는 3이 출력된다. 예제 입/출력 2를 보자. 25와 4가 주어졌는데 25의 약수는 1, 5, 25이다. 4번째로 작은 수가 없으므로 0이 출력된다. 예제 입/출력 3을 보자. 2735와 1이 주어졌는데 2735의 약수는 1, 5, 547, 2735이다. 1번째로 작은 수는 1이 출력된다. 문제 풀이 일단 자연수 N을 입력받아서 배열을 N만큼 선언 및 초기화한다. 배열 arr에 N을 i(1~N)까지 나눠서 나머지가 0이면 i값을 넣어준다. (N=6일 때) a..

article thumbnail
[java] 백준 1568번 새
알고리즘/백준 2021. 8. 10. 17:07

문제 요약 새들은 1부터 ~ 모든 자연수까지 오름차순으로 노래한다. 숫자 K를 노래할 때 K 마리만큼 날아간다. 남은 N마리의 새가 불러야 할 숫자보다 작으면 1부터 다시 부른다. 모든 새가 날아가기까지 총 몇 초가 걸리는지 출력. (날아가는데 1초) 문제 풀이 K는 1씩 증가 N이 K보다 작아지기 전까지 N은 K만큼 감산 감산을 하는 동안 count를 하나씩 누적 N이 K보다 작다면 3번과 같이 K를 1로 초기화시켜주고 다시 N에 K만큼 감산 N이 0이 될 때까지 이 동작을 반복 N이 0이 되면 반복문을 탈출하고 count 출력 1. N=14 K N 1 13 2 11 3 8 4 4 5 -1 count = 4 2. N=4 K N 1 3 2 1 3 -2 count = 2 3. N = 1 K N 1 1 co..

article thumbnail
[java] 백준 2765번 자전거와 속도
알고리즘/백준 2021. 8. 10. 14:52

문제를 요약하자면... 바퀴의 지름과 회전수로 이동거리를 구할 수 있고, 바퀴가 회전하는 동안 걸린 시간과 이동거리를 이용하여 평균 속도를 구할 수 있다. 다른 문제들과 다르게 쓰일 단위들이 많아서 힌트에 '이렇게 쓰면 된다'는 느낌으로 써주었다. 나 같은 경우 힌트를 안 보고 'miles to inch'를 검색하여 찾았지만 ㅋㅋㅋ 예제 입/출력을 보다가 힌트가 있는 것을 보게 되어 참조했다. 코딩을 하기 전에 어떻게 풀지 공책에 끄적여 보았다. 지름(diameter) : d, 회전수(cycle) : c, 걸린 시간(second) : s 이동거리 : distance, 평균 속도 : mph 이동거리 같은 경우 입력에서는 inch로 입력 받는데 출력에서 miles로 출력해야 되기 때문에 inch를 5280으..

article thumbnail
[java] 프로그래머스 - 부족한 금액 계산하기

내가 본 프로그래머스 문제들은 대부분 어려워 보였는데 이웃님들 중 한 분께서 프로그래머스 문제를 python으로 푸셨다. 문제 내용을 보고 나서 오! 나도 풀 수 있겠다 싶어서 풀어보았다. 제한사항에 money의 범위가 10억 적혀있어서 백준에서 풀던 느낌으로 BigInteger 쓸 생각이었는데... 백준보다 친절한 코딩 창... long 타입을 쓰면 된다고 나와있다.... return을 무조건 answer로 끝내야 하나? 문제 풀이 tot 변수를 하나 만들어서 N번 탈 때마다 놀이기구 이용료가 N배 증가하기 때문에 누적시켜주면 된다. for (int i=1; i

article thumbnail
[java] 백준 2523번 별 찍기 - 13
알고리즘/백준 2021. 8. 9. 15:11

내 입장에서 별 찍기가 가장 어려운 것 같다... (멍충해서 그런가 ㅋㅋ 아니면 1학년 때 C언어 과목에서 고놈의 별 찍기를 트라우마가 생길 정도로 찍었던 기억 때문일지도... 과제로 내주시는 교수님... 하지만 printf("")로 찍었던 나... ㅎㅎㅎ) 문제 출력에서 보면 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. 라고 했으니 입력이 N=3이 들어왔을 때 출력이 총 5줄에 걸쳐 찍히기 때문에 기준을 N으로 잡아서 풀면 되겠다는 생각이 들었다. for(int i=0; i

article thumbnail
[java] 백준 5073번 삼각형과 세 변
알고리즘/백준 2021. 8. 9. 13:11

간단하게 요약하자면 Equilateral : 세 변의 길이가 모두 같은 경우 Isosceles : 두 변의 길이만 같은 경우 Scalene : 세 변의 길이가 모두 다른 경우 Invalid : 주어진 세 변의 길이가 삼각형의 조건을 만족하지 못하는 경우(가장 긴 변 >= 나머지 두변의 합) 입력이 0 0 0이 들어가지 않는 이상 계속 돌게 만들어야된다. 가장 긴 변 같은 경우 세 변을 입력받고 가장 큰 값을 긴 변으로 생각하여 변수(max)를 만들어주면 되고 나머지는 비교 연사자를 쓰면 풀 수 있는 문제이다. 여담) 처음에 쓴 코드다. (당연히 틀렸다..) if (arr[0] == arr[1] && arr[1] == arr[2]) System.out.println("Equilateral"); else i..

article thumbnail
[java] 백준 1252번 이진수 덧셈
알고리즘/백준 2021. 8. 8. 20:03

문제는 쉬워 보일 수 있다. 하지만 입력에서 각 이진수의 길이는 80을 넘지 않는다. 즉, 79자리인 입력이 들어올 경우 웬만한 자료형들은 범위를 벗어나 NumberFormat과 같은 런타임 에러가 발생할 수 있다. 여기서 써야할 클래스는 BigInteger 클래스, int, long, String으로 해보았지만 되는 것은 없었고 결론은 BigInteger 클래스였다. 나의 풀이 방법은 이렇다. 무한한 수를 담을 수 있는 BigInteger 클래스로 값을 담아서 문자열로 바꿔 준 후 문자열(2진수)을 다시 10진수로 변환시키기 위해서 BigInteger 클래스에 담아준다. 그리고 BigInteger의 add 메소드를 통해 10진수로 변환한 a와 b의 가산을 해주고 toString() 메소드로 다시 2진수..

article thumbnail
[java] 백준 10826번 피보나치 수 4
알고리즘/백준 2021. 8. 8. 15:21

기존에 피보나치 수 2(2748번) 문제를 보게 되면 범위가 90인데도 long형의 범위에 들어섰었는데 [java] 백준 2748번 피보나치 수 2 먼저 문제를 보기 전 어제 풀었던 피보나치 수 문제와 같은 문제다. 단지 범위가 커진 것 뿐... [java] 백준 2747번 피보나치 수 문제를 설명하기 앞서 이 아래의 문제와 같은 문제이다. 예제 입력과 begin-dev-awos.tistory.com 이 문제는 무려 입력이 10000이다. 하지만 쫄 필요는 없다. java에서 지원하는 그 이상의 숫자를 나타내줄 수 있는 BigInteger 클래스가 존재하기 때문에 활용을 하면 된다. 풀이는 2748번과 같으므로 생략하겠다. import java.math.BigInteger; import java.util..

article thumbnail
[java] 백준 2748번 피보나치 수 2
알고리즘/백준 2021. 8. 8. 10:14

먼저 문제를 보기 전 어제 풀었던 피보나치 수 문제와 같은 문제다. 단지 범위가 커진 것 뿐... [java] 백준 2747번 피보나치 수 문제를 설명하기 앞서 이 아래의 문제와 같은 문제이다. 예제 입력과 출력은 같다. 즉, F(n) = F(n-2) + F(n-1) 이 문제는 간단하게 재귀를 쓰면 된다. import java.util.Scann.." data-og-host="begin-dev-awos... begin-dev-awos.tistory.com 피보나치 수(2747번) 문제와 동일하기 때문에 코드에 대한 설명은 하지않고 어떤 점이 달라지는지를 설명하도록 하겠다. 간단하게 2747번 문제라고 하겠다. 2747번 문제 같은 경우 int형의 범위 안에서 결과값이 나올 수 있었는데... 이번 문제 같..

article thumbnail
[java] 백준 2747번 피보나치 수
알고리즘/백준 2021. 8. 7. 14:01

문제를 설명하기 앞서 이 아래의 문제와 같은 문제이다. 예제 입력과 출력은 같다. [java] 백준 10870번 피보나치 수 5 문제를 요약하자면 0번째 0, 1번째 1, 2번째부터는 0번째 값과 첫 번째 값의 합이라는 것이다. F(2) = F(0) + F(1) -> 즉, F(n) = F(n-2) + F(n-1) 이 문제는 간단하게 재귀를 쓰면 된다. import java.util.Scann.. begin-dev-awos.tistory.com 이 문제와 위의 문제의 차이점은 n의 범위다. 10870번 문제에서 n은 20이었고, 이번 2747번 문제에서는 n은 45이다. 또한 티어의 차이도 있는데 약간 애매하다... 10870 티어가 좀 더 높은데 난 뒤바꼈다고 생각한다. 10870문제에서 쓰던 소스를 복..

article thumbnail
[java] 백준 21866번 추첨을 통해 커피를 받자
알고리즘/백준 2021. 8. 7. 09:38

문제 내용을 요약하자면 대회의 9문제의 배점이 100점, 100점, 200점, 200점, 300점, 300점, 400점, 400점, 500점 이라고 한다. 그리고 받은 점수의 합계가 100점 이상이라면 커피를 받을 수 있다. 근데 점수를 조작하는 사람들이 있는데 문제의 배점을 초과하여 점수를 받는다면 hacker로 간주 출력에서 커피 추첨 대상자가 아니라면 none을 출력하고, 해커라면 hacker를 출력한다. 그 외의 경우에는 draw를 출력한다. 라고 되어있으니 그에 맞게 if문으로 조건 걸어주면 쉽게 풀 수 있다. 9문제의 배점을 배열로 만들어 점수를 입력받을 때 문제의 배점을 입력받은 점수가 초과하게 되면 hacker, 100점 미만이면 none, 그 외라면 draw 로 처리해주면 된다. impo..

article thumbnail
[java] 백준 21312번 홀짝 칵테일
알고리즘/백준 2021. 8. 6. 16:08

문제 내용이 뭔가 긴데... 그냥 요약해주자면... 입력을 홀수 홀수 짝수 입력받았을 때 홀수 X 홀수 해주면 되고 홀수 홀수 홀수 입력 받았을 때 홀수 X 홀수 X 홀수 해주면 된다. 짝수 짝수 짝수 입력 받았을 때 짝수 X 짝수 X 짝수 해주면 된다. 다시 한번 예를 들어주자면 짝수 짝수 홀수가 나왔을 때 1 X 홀수가 된다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] arr = new int[3]; int tot = 1; for (int i = 0; i < 3; i++) { arr[i] = sc.nextInt()..

article thumbnail
[java] 백준 10870번 피보나치 수 5
알고리즘/백준 2021. 8. 5. 23:35

문제를 요약하자면 0번째 0, 1번째 1, 2번째부터는 0번째 값과 첫 번째 값의 합이라는 것이다. F(2) = F(0) + F(1) -> 즉, F(n) = F(n-2) + F(n-1) 이 문제는 간단하게 재귀를 쓰면 된다. import java.util.Scanner; class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n_th= sc.nextInt(); System.out.println(pibo(n_th)); } static int pibo(int n){ if(n

article thumbnail
[java] 백준 2721번 삼각수의 합
알고리즘/백준 2021. 8. 5. 17:51

문제에서 T(n)은 1부터 n까지의 합, T(4) = 1+2+3+4, 즉 T(4) = 10 W(n) = Sum[k=1..n; k*T(k+1)] 좀 쉽게 풀어서 쓰자면 W(4)일 때 식은 이렇게 나온다. W(4) = 1*T(2) + 2*T(3) + 3*T(4) + 4*T(5) T를 좀더 쉽게 풀어쓰면 W(4) = 1*(1+2) + 2*(1+2+3) + 3*(1+2+3+4) + 4*(1+2+3+4+5) W(4) = 3 + 12 + 30 + 60 = W(4) = 105가 된다. 처음에 문제를 봤을 때 이게 뭔 소린가 싶었다. 필자는 공부에 뜻이 없어 전과목을 포기했다... ㅋㅋㅋ 오로지 게임에만... 이 문제의 공식도 어제 풀었던 시그마 문제랑 식이 비슷하다. [java] 백준 2355번 시그마 전에는 쉬운 ..