본문 바로가기

알고리즘149

백준 2840 행운의 바퀴 (JAVA 자바 풀이) 백준 2840 행운의 바퀴 (JAVA 자바 풀이) 💡 풀이 과정 구현, 시뮬레이션 문제이다. 문제에서 주어진 요구 사항을 그대로 구현하면 된다. 첫번째로 입력받는 값을 임의로 설정하고 다음 순서로 들어오는 알파벳들을 배열에 채워준다. 예제 입력으로 다음과 같이 주어지는 케이스를 생각해보자. 5 6 1 A 2 B 5 B 1 C 2 A 2 B 먼저 바퀴가 5개라는 정보가 주어진다. 이는 배열의 크기가 5개보다 많을 수 없음을 나타내므로 5개 칸을 가진 배열을 만들어준다. StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine()); int N = Integer.parseInt(stringTokenizer.nextToken().. 2023. 6. 24.
버블 정렬 (Bubble Sort) - 아이디어, 작동 원리, 성능 및 시간 복잡도, 특징, 자바 구현 코드 버블 정렬 비교 기반 알고리즘 중 가장 기초가 되는 버블 정렬에 대해 살펴본다. 아이디어 오름차순 정렬이라고 할 때, 모든 인접한 두 값을 비교하여 왼쪽의 값이 더 큰 경우 자리를 하나씩 바꾸는 과정을 반복해서 정렬한다. 버블 정렬은 왼쪽 -> 오른쪽, 오른쪽 -> 왼쪽 진행방향을 두 가지로 나눠서 생각해볼 수 있다. 하지만 결론은 동일하게 나타난다. 작동 원리 다음과 같은 데이터를 정렬하는 과정을 통해 실제 작동 원리를 살펴보자 . int[] arr = {50 20 30 10 40}; 50 20 30 10 40의 숫자 중에서 첫 번째부터 마지막까지 각각을 왼쪽에서부터 오른쪽으로 하나씩 옮겨가면서 비교를 한다. 예를 들어 다음과 같다. i=0) 1) 먼저 50과 20을 비교한다. 왼쪽의 값이 더 크므로 .. 2023. 6. 23.
금액 표기시 천 단위로 숫자에 컴마를 찍는 6가지 방식 (자바 구현 코드) 천 단위로 금액을 계수하기 쉽도록 컴마를 찍는 표기법을 자바 코드로 구현하는 방법을 알아본다. - 1000 -> 1,000 - 123456789 -> 123,456,789 아이디어의 몇 가지 포인트들은 다음과 같다. - 숫자형을 받아 문자형으로 리턴해야 한다. - 3자리 수에 착안한다. - 자릿수 정보를 이용하여 앞에서부터 붙이거나, 자릿수 정보 없이 뒤에서부터 붙이거나. - 나눗셈과 나머지 연산을 사용할 수 있다. - Regex를 이용할 수 있다. 크게 나머지 연산을 이용한 풀이법과 Regex를 이용한 풀이법으로 나뉜다. 1~5는 나머지 연산을 이용한 코드이고 마지막 코드는 Regex를 이용한다. 1. 반복문과 나눗셈을 이용한 방식 1 private static String convert(long mo.. 2023. 6. 21.
자바 숫자의 자릿수를 판별하는 5가지 방식 숫자의 자릿수를 판별하는 5가지 방식에 대해 살펴본다. 1. 나머지 연산과 반복문을 이용한 방식 public static int calculate(int number){ int count=0; while (number>0){ number /= 10; count++; } return count; } 동작 원리 주어진 숫자를 10으로 나눈 나머지를 계산한다. 나머지 연산을 통해 숫자의 가장 오른쪽 자릿수를 구하고, 해당 자릿수를 버린 숫자를 얻는다. 버린 숫자가 0보다 큰 경우, 자릿수를 하나 증가시키고 1단계로 돌아간다. 버린 숫자가 0인 경우, 반복문을 종료하고 자릿수를 반환한다. 예를 들어, 숫자 1234를 처리하는 경우 1234를 10으로 나누고 몫인 123을 얻는다. 그리고 자릿수를 하나 증가시키고.. 2023. 6. 21.
자바 문자열 역순 뒤집기 4가지 방법 문자열을 뒤집는 4가지 방법에 대해 소개한다. 결과적으로StringBuilder를 사용해 문자열을 조작하는 일이 대부분이겠지만 그래도 밑단의 알고리즘이 돌아가는 원리를 이해해보는 취지에서 여러 가지 방법을 생각해보았다. 1. 단순 반복문 이용 단순 반복문을 이용하여 뒤에서부터 탐색하고 하나씩 새로운 String으로 만든다. 다음 메서드는 하나의 매개변수 word를 받으며, 이를 뒤집어 리턴한다. public static String reverse(String word) { StringBuilder stringBuilder = new StringBuilder(); for (int i = word.length() - 1; i >= 0; i--) { stringBuilder.append(word.charAt(.. 2023. 6. 21.