Algorithm
-
1/25기록 - 백준 2161Algorithm 2022. 1. 25. 09:24
오늘의 포스팅은 백준 2161번 카드1 문제이다. 이 문제를 솔직히 보자마자 내 첫 포스팅이던 요세푸스 문제가 떠올랐다. 선입선출의 개념으로 Queue를 이용해서 풀면 깔끔할 것 같았다. 제일 처음에는 Queue와 ArrayList를 활용해서 Queue에서 poll() 메소드로 뽑은 수를 ArrayList에 담아서 list를 출력시키려고 생각했는데, 예제 출력 상 중간에 띄워져 있는 부분이 있어서 list만 출력시키면 안될 듯 하여 그냥 Queue만으로 문제를 풀고, StringBuilder에 append하여 출력시키는 방식을 생각했다. 알고리즘 생각 1. Queue를 활용한다. 2. N을 입력받고 for문으로 N만큼 선언된 Queue에 add() 시켜 준다. 3. isEmpty() 메소드를 사용하여 w..
-
1/24기록 - 백준 1357Algorithm 2022. 1. 24. 11:02
오늘은 즐겁고 상쾌한지 잘 모르겠는 월요일이다.... 문제를 살펴보다가 제목이 너무 마음에 드는 문제가 있어서 문제를 풀어 보았다. 제목은 다름 아닌 뒤집힌 덧셈 ㅋㅋㅋㅋ. 오늘 뭔가 좀 꼬였는지 자꾸 뒤집고 싶다 각설하고 문제로 들어가보자 어제 했던 글자 뒤집기와 비슷한데 여기서는 숫자를 뒤집어서 덧셈을 하라는 문제이다. 처음 떠올린 방식은 자바에서는 숫자의 경우 문자열로 뒤집고 숫자로 다시 만들어주는 방식을 많이 취하기 때문에 어제와 같이 배열에다가 넣어주는 것을 생각했었다. 하지만 마지막에 덧셈을 해주어야 하기 때문에 굳이 메모리가 많이 먹는 배열을 선언하기 보다는 수식을 통해 Rev() 함수를 만들어서 덧셈을 하는 방식을 택했다. 알고리즘 생각 1. x,y 입력받기 2. Rev함수 만들기 -숫자를..
-
1/23기록 - 백준 1259Algorithm 2022. 1. 23. 11:12
아침에 날씨가 좀 꿀꿀해서 기분이 상쾌하진 않았지만 매일 아침의 시작을 알리는 작업으로 하기로 한 나와의 약속을 위해 알고리즘 문제를 하나 풀었다. 오늘의 문제는 백준 1259번 펠린드롬수 문제이다. 펠린드롬수란 앞에서 읽어도 뒤에서 읽어도 똑같은 수를 말한다. 파이썬 공부를 할 때 봤던 회문판별이랑 같은 원리였다. 사실 회문판별은 중간을 잘라서 앞뒤를 비교하는 거였는데, 하다 보니 잘 기억이 나지를 않아서 그냥 앞뒤를 비교하는 방식을 택했다. 알고리즘 생각 1. string 문자열 하나를 입력받는다. (숫자 이지만 equals로 비교를 하기위해서는 문자열로 인식시키는 것이 좋다.) 2. equals 메소드를 이용해서 0이 되면 break를 해준다. 3. 입력받은 문자열을 배열의 인덱스로 문자 하나하나를..
-
1/22기록 - 백준 4344Algorithm 2022. 1. 22. 11:24
주말인 만큼 가뿐한 문제 하나 풀어보자는 생각으로 어제와 유사한 평균 문제를 풀어보았다. 결론적으로 생각은 너무 쉽게 했고, 문제를 쭉쭉 풀었는데 답이 계속 이상하게 나와서 의도치 않게 애를 먹은 문제였다. 백준 4344번 평균은 넘겠지 문제이다. 문제가 너무나 간단하기 때문에 읽어보면 바로 이해가 된다. 총 케이스 5개에 대해서 평균이상이 된 사람의 비율을 구하면 된다. 알고리즘 생각 1. 케이스 수를 입력받는다. 2. 배열을 하나 선언하고 입력받을 성적 수를 N으로 두고 N크기의 반복문으로 배열에다 차곡차곡 담아준다. 3. 평균을 구하기 위해 sum과 avg 변수를 선언해서 식을 만들어준다. 4. 평균보다 성적이 높을 경우 count++하는 반복문을 만들어준다. 5. 평균을 넘는 학생 퍼센트는 (co..
-
1/21기록 - 백준 1546Algorithm 2022. 1. 21. 10:49
오늘은 브론즈 1 문제에서 평균이라는 글자가 눈에 띄어서 백준 1546번 평균 문제를 도전해 보았다. 학교 과제나 각종 언어책 예제에서 과목 평균 문제는 정말 많이 다루기 때문에 문제를 보자 마자 익숙하긴 했다. 꿀 빤 느낌... 오늘의 문제이다. 문제를 읽으면서 익숙하다는 느낌도 받았지만, 세준이란 놈이 어이가 없다는 생각만 계속 했던거 같다. 도대체 어디서 나온 점수 계산법인지... ㅋㅋㅋㅋㅋ 알고리즘 생각 1. 배열을 하나 선언해서 숫자를 모두 입력받는다. 2. 배열에 선언된 수 중 max 변수와 비교를 하여 배열에 선언된 수가 max 변수값 보다 더 크면 max에 배열에 선언된 수를 넣어준다. 3. sum 변수에 성적을 모두 담아준다. 4. 문제에서 원하는 계산법 대로 총합 성적을 산출하고 과목 ..
-
1/20기록 - 백준 1110Algorithm 2022. 1. 20. 15:32
2박 3일의 제주도 여행을 끝내고 돌아오자 마자 한 문제를 풀고 쉬기로 했다. 나와의 약속이니까!!! 오늘은 지난번 포스팅에서 말했었기 때문에 브론즈1을 도전해 보았다. 백준 1110번 더하기 사이클 문제 처음 문제를 읽으면서 수열 문제인가 생각했는데, 그게 아니었다. 문제에서 주어진 규칙대로 새로운 수를 만들고 그렇게 만들어진 수가 처음 입력한 수와 동일하면 종료시키는 문제였다. 이 문제는 알고리즘을 짜면서 사실상 문제를 다 풀었다. 알고리즘 짜는게 그냥 끝인 문제이기 때문에... 알고리즘 생각 1. 입력 예시를 통해 살펴 보니 26 -> 68(26의 일의자리가 새로운 수의 10의 자리, 2+6이 새로운 수의 일의 자리) 그렇다면, 26 -> 26%10 = 6(일의자리) * 10 = 6이 10의 자리로..
-
1/18기록 #2 - 백준 1159Algorithm 2022. 1. 18. 10:21
생각보다 이전 문제가 너무 빠르게 해결이 되어서 한 문제를 더 풀어 보기로 했다. 이번 문제는 백준 1159번 문제 농구경기 문제이다. 잡다한 설명들은 제외하고 맨 처음 알파벳이 5개 이상인지 아닌지를 판단하면 되는 문제이다. 2학기 자바프로그래밍 중간고사에서 알파벳 문제가 대놓고 나온 적이 있어서, 아스키 코드 값을 시작 지점은 기억하고 있었다. a는 97이란거, 그리고 알파벳은 총 26개라는 거... 사실 이거만 알면 문제 길이에 비해 너무 간단했다. 알고리즘 생각. 1. 26크기의 알파벳을 담을 수 있는 배열을 선언. 2. 반복문을 돌릴 N을 입력 받고, N크기의 for문을 만들어 String 변수에 수 많은 알파벳을 담아줌. 3. 변수.charAt(0) 메소드를 이용하여 문자열의 제일 처음 문자를..
-
1/18기록 #1 - 백준 1075번Algorithm 2022. 1. 18. 10:06
1/18일 제주도 여행을 떠나기 전 아침에 빠르게 문제를 하나 풀어 보았다. 백준 1075번 나누기 문제이다. 문제는 정말 간단하다 N과 F를 입력 받고, N을 F로 나누었을 때 N의 맨 뒤 두자리를 조작하여 나누어 떨어질 수 있는 수를 만드는 것이다. 맨 처음 든 생각은 갑자기 맨 뒤 두 자리를 어떻게 바꾸지...?? 였는데, 맨 뒤 두 자리에 초점을 맞추어 계속 생각하다 보니 맨 뒤 두 자리를 그냥 00으로 만들어 초기화 시켜 놓고 시작하면 될 듯 싶었다. 알고리즘 생각 1. 맨 뒤 두 자리를 00으로 초기화 시킨다. 2. 반복문 안에서 N이 F로 나누어 떨어질 때, N을 100으로 나눈 나머지 값을 출력하자. 3. 값이 10보다 작으면 02 이런식으로 출력해야 하므로, 출력 형식에 맞게 출력해주면 ..