java
-
[백준 11005번] 진법 변환 2Algorithm/기타 2020. 1. 5. 19:05
백준알고리즘 11005번 : 진법 변환 2 처음 제시된 x값 10진수 숫자를 y진수로 변환하는 문제이다. 처음에는 시간초과가 났다. 왜 그런 것인지 고민해보니, while문을 두번씩 돌리려고 하다보니 발생한 것이라는 결론이 났다. 이를테면 1234를 2진수로 바꾸려고 할때,(10011010010) 나는 이 2진수의 길이를 찾기 위해 while문을 돌리고, 1234에서 2의 10승인 1024를 빼고, 남은 숫자에서 2의 9승을 빼보고 ... 이런식으로 하여 while문을 두 번씩 돌렸던 것이다. for문은 덤이다. 비효율적인 풀이 방식이라고 생각은 했었으나.. 아무튼 결국엔 아랫자리부터 뽑아내야하는 것이다. 헷갈릴때는 10진수의 숫자를 다시 10진수로 변환하는 것 처럼 생각해보면 편하다. 1234는, 1...
-
[백준 11655번] ROT13Algorithm/기타 2020. 1. 1. 20:33
백준알고리즘 11655번 : ROT13 알파벳을 13번째만큼 밀어서 암호를 만들어내는 문제이다. 알파벳의 갯수는 총 26개이기때문에, 위로 13번을 밀어보내든, 아래로 13번을 보내든 어차피 같은 문자가 될 것이다. 예를들면 1번째 알파벳인 A를 13번 뒤로밀면, B, C, D, E, ... , N이 되고, 앞으로 밀어도 역시, Z, Y, X, W, ... , N이 될 것이다. 대문자는 대문자끼리, 소문자는 소문자끼리 밀어주고, 여차 다른 문자는 그대로 둔다. 예컨대 숫자나 공백 같은 것들은 그대로 둬야한다는 뜻이다. ASCII코드로 문자열의 각 문자들을 변환해주고, 그 ASCII 코드를 13번 민 다음, 다시 문자의 형태로 출력하면 된다. 풀이 과정 1. 받은 문자열을 선언하고, 선언한 문자열의 각 문..
-
[백준 10798번] 세로읽기Algorithm/기타 2019. 12. 30. 22:35
백준알고리즘 10798번 : 세로읽기 나오는 5문장을 세로로 출력하는 문제이다. 배열을 5개 만들고 난 뒤, 각 String 값을 split한 배열을 집어넣는다. 그리고 각 배열을 2중 for문을 돌려 세로로 출력한다! 길이를 어떻게 지정해주어야 하나, 고민했는데 문제를 풀어보고나니 split한 string 값들을 배열에 담고나니, 자동으로 배열의 길이가 split한 갯수만큼으로 맞춰진다는 것을 알수있었다. 풀이 과정 1. 이중 배열을 5개 선언한다. 선언 시 각 배열의 row 길이는 상관없다. 2. String 값을 받아, split하여 각 배열에 순차적으로 담는다. 3. 2중 for문을 통해 각 배열들의 row값들을 순서대로 받아온다. 소스 ▽ 더보기 import java.util.Scanner; p..
-
[백준 11050번] 이항 계수 1Algorithm/기타 2019. 12. 28. 04:05
백준알고리즘 11050번 : 이항 계수 1 이항 계수가 뭔지 몰라서 검색해봤는데, 5C1 10C7 뭐 이런거였다. 보니까 알겠다. 5C1 = 5!/4!1! 10C7 = 10!/7!3! 수학 문제에서도 이런 이항 계수 문제를 풀때면, 10C7 은 10!/7! 에 3!을 나눈것이니까, 10*9*8 / 3! 로 계산을 해주면 된다. 단, 10C0 처럼 뒷 자리가 0인 경우에는 값이 무조건 1이되는 것을 조건에 넣어줘야한다. 풀이 과정 1. N과 K값을 받고, N부터 N-K까지의 값을 하나씩 곱해준다. 2. 이를 K부터 K-1, K-2, ... 1까지 곱한 값으로 나눠준다. 3. 계산한 결과를 출력하되, K가 0인경우에는 1을 출력한다. > 10 0 소스 ▽ 더보기 import java.util.Scanner;..
-
[백준 1193번] 분수찾기Algorithm/기타 2019. 12. 27. 20:58
백준알고리즘 1193번 : 분수찾기 어떻게 접근하는 지 알게되고나면 어렵지 않은 문제라고 생각한다. 그러나 언제나 그 접근 방법이 어렵다. 분모와 분자의 합을 S라고 하자, 이 X를 기준으로 1행(혹은 1열)을 보게되면, {2, 3, 4, 5,....} 와 같이 한 개씩 늘어나는 것을 확인할 수 있다. 그리고 행을 기준으로 왼쪽 아래의 대각선으로 한칸씩 내려가면, 하나의 대각선은 모두 동일한 S값을 갖고 있음을 알 수 있다. 그렇다면 우리가 구하고자하는 N번째 수가 1행의 몇 번째 열에 해당하는 대각선에 있는지 알 수 있다면, 적절한 계산을 통해 구할 수 있을 것이다. 각 대각선의 길이는 1, 2, 3...순으로 1씩 증가하는 등차수열이므로, 등차수열의 합 공식 n(n+1)/2 을 이용하여 대각선 길이의..
-
[백준 1453번] 피씨방 알바Algorithm/기타 2019. 12. 25. 16:59
백준알고리즘 1453번 : 피씨방 알바 boolean 배열을 이용해서, 처음 들어온 손님의 자리에는 true를 부여하고 이미 true인 값에 접근하려고 하는 사람들에 대해서만 count해준다. 풀이 과정 1. 피씨방의 자릿수는 100개로 고정이기 때문에, boolean type의 배열을 선언한다. 2. 요구하는 자리의 값이 false라면, true로 변경하여 자리가 찼음을 기억하고, 입장을 거절당하는 경우인 true일 때만 count한다. 3. 들어오는 인원 수 만큼 for문을 돌려 2번 과정을 반복한다. 소스 ▽ 더보기 import java.util.Scanner; public class Main {// 1453번 피씨방 알바 public static void main(String[] args) { S..
-
[백준 4344번] 평균은 넘겠지Algorithm/기타 2019. 12. 17. 23:25
백준알고리즘 4344번 : 평균은 넘겠지 각 점수를 받고, 이들의 합을 구한 뒤 점수의 갯수만큼 나눠준 평균값을 정의한다. 이러한 일련의 과정은 어렵지 않게 풀 수 있을 것이고, 출력을 소숫점 3자리까지 반올림으로 행하는 것이 더 중요한 것 같다. 풀이 과정 1. 각 점수들을 받는 동시에, 점수 총점을 구하기 위해 더해준다. 2. 더한 값을 점수의 갯수로 나눈다. 3. for문을 한번 더 돌려, 평균보다 높은 점수의 갯수를 count한다. 4. printf문을 이용하여 비율을 소수 셋째자리까지 출력한다. 소스 ▽ 더보기 import java.util.Scanner; public class Main {// 4344번 평균은 넘겠지 public static void main(String[] args) { S..
-
[백준 11719번] 그대로 출력하기 2Algorithm/기타 2019. 12. 16. 23:43
백준알고리즘 11719번 : 그대로 출력하기 2 굉장히 쉬운 문제인줄 알았는데.. 굉장히 쉬운 문제가 맞았다. 생각해야할 것은 '언제 입력을 그만받을 것이냐?' 하는 질문 오직 하나다. Scanner의 내장 method 중, hasNext()의 return 값이 boolean이라는 것을 알았다면 더더욱 쉬웠을 것이다. 덕분에 알게되었지만. 풀이 과정 1. 문장을 Scanner를 통해 받아서 저장한다. 2. 그리고 그것을 출력한다. 3. 1번과 2번을 while문을 통해 반복한다. hasNext() method를 이용하면, 다음에 받는 입력값이 있는 동안에만 while문을 돌릴 수 있다. 소스 ▽ 더보기 import java.util.Scanner; public class Main {// 11719번 그대..