자바 73

백준(BOJ) 1157 : 단어 공부 (자바, 파이썬)

1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 설계 입력된 문자열에서 가장 많이 사용된 알파벳 문자를 찾고, 만약 가장 많이 사용된 문자가 여러 개라면 물음표(?)를 출력합니다. 각 문자의 빈도를 계산하기 위해 int 배열을 사용합니다. 각 문자는 ‘A’에서 ‘Z’ 사이의 값으로 변환되어 해당 인덱스의 빈도를 증가시킵니다. 이후 가장 빈도가 높은 문자를 찾고, 동일한 빈도를 가진 다른 문자가 존재하는 경우 물음표(?)를 출력합니다. 구현 코드 자바(Java) // package boj1157; import java.util.*; public..

Problem_Solving 2024.01.21

백준(BOJ) 1181 : 단어 정렬 (자바, 파이썬)

1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 설계 주어진 단어들을 길이가 짧은 순으로, 길이가 같을 경우 사전 순으로 정렬 주어진 단어들을 HashSet을 사용하여 중복을 제거한 뒤, 배열로 변환 그 후, Arrays.sort 메소드와 람다식을 사용하여 단어들을 길이 순으로 정렬 길이가 같은 경우에는 사전 순으로 정렬 정렬된 단어들은 반복문을 통해 출력 구현 코드 자바(Java) // package boj1181; import java.util.*; import java.io.*; public ..

Problem_Solving 2024.01.20

백준(BOJ) 11650 : 좌표 정렬하기 (자바, 파이썬)

11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 설계 2차원 좌표를 입력받아 x좌표가 증가하는 순으로, x좌표가 같을 경우 y좌표가 증가하는 순으로 정렬 Arrays.sort 메소드와 람다식을 사용하여 좌표를 정렬 먼저 x좌표에 따라 정렬하고, x좌표가 같은 경우에는 y좌표에 따라 정렬 정렬된 좌표는 반복문을 통해 출력 구현 코드 자바(Java) // package boj11650; import java.util.Arrays; import java.util...

Problem_Solving 2024.01.19

백준(BOJ) 10814 : 나이순 정렬 (자바, 파이썬)

10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 설계 나이와 이름이 주어졌을 때 나이 순으로 정렬 나이와 이름을 각각 별도의 배열에 저장한 후, 인덱스 배열을 사용하여 나이 순으로 정렬 나이가 같은 경우에는 가입 순서(입력 순서)대로 정렬 정렬된 순서대로 나이와 이름을 출력하여 최종 결과를 도출 이러한 접근 방식은 나이와 이름이 별도의 배열에 저장되어 있기 때문에, 인덱스를 사용하여 두 배열을 연결하는 방식으로 구현 구현 코드 자바(Java) // package boj10814; import java.util.*; ..

Problem_Solving 2024.01.18

Shell로 BOJ VSCode Java 설정 자동화하기 (Mac 기준)

요새 특강 때문에 PS를 반복으로 하고 있다. PS용으로는 Eclipse와 IntelliJ는 좀 무거운 느낌이라서 VScode로 진행 중이다. 근데 이게 계속 하다보니 번거롭고 귀찮다. 그런데 또 나는 개발자다. 그러하니 자동화하자. VScode는 .vscode/launch.json 에서 실행/디버깅 설정을 관리한다. 문제를 풀기 위한 기본 폴더 + input.txt를 만들어주면서 동시에 해당 경로로 실행 설정을 가장 top으로 잡아주는 걸로 구현 Repository (폴더 구조) GitHub - TomAlgorismus/snippet: 코드 조각 코드 조각. Contribute to TomAlgorismus/snippet development by creating an account on GitHub...

Today_I_Learned 2024.01.17

백준(BOJ) 1654 : 랜선 자르기 (자바, 파이썬)

1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 설계 이분 탐색(Binary Search) 알고리즘을 사용하여 최적의 랜선 길이를 찾습니다. 이분 탐색은 주어진 범위를 반으로 나누어 탐색하는 방법으로, 효율적인 탐색을 가능하게 합니다. 이 경우, 랜선의 길이 범위를 절반씩 줄여가며 원하는 개수의 랜선을 만들 수 있는 최대 길이를 찾습니다. 구현 코드 자바(Java) // pacakge boj1654; import java.util.*; public class Main { publi..

Problem_Solving 2024.01.17

프로그래머스 : 문자열 압축 (자바, 파이썬)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 주어진 문자열을 여러 길이 단위로 잘라서 각 단위별로 압축한 후 가장 짧은 압축 길이를 찾습니다. 문자열 압축 과정에서 동일한 문자열이 반복되는 경우 숫자를 이용하여 압축하고, 그렇지 않은 경우 원본 문자열을 사용합니다. 압축된 문자열의 최소 길이를 찾기 위해 모든 가능한 단위를 탐색하며, 각 단위별로 압축된 문자열의 길이를 계산하여 최소 길이를 갱신합니다. 구현 코드 자바(Java) class Solution { public int solution(String s) { // 최솟값을 구하는 문제 // ..

Problem_Solving 2024.01.16

백준(BOJ) 11652 : 카드 (자바, 파이썬)

11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지 www.acmicpc.net 설계 주어진 숫자들 중 가장 많이 등장하는 숫자를 찾고, 동일한 빈도의 숫자가 여러 개 있는 경우에는 가장 작은 숫자를 출력합니다. 각 숫자의 등장 횟수를 저장하는 HashMap을 사용하여 숫자들의 빈도를 계산하고, 이를 기반으로 정렬하는 것입니다. 숫자와 빈도를 2차원 배열에 저장한 후, 빈도가 동일한 경우 숫자의 크기에 따라 오름차순으로, 빈도가 다른 경우 빈도에 따라 내림차순으로 정렬합니다. 그 후, 가장 첫 번째 원소(가장 많이 등장하거나 가장 작은 ..

Problem_Solving 2024.01.12

백준(BOJ) 13251 : 조약돌 꺼내기 (자바, 파이썬)

13251번: 조약돌 꺼내기 첫째 줄에 뽑은 조약돌이 모두 같은 색일 확률을 출력한다. 정답과의 절대/상대 오차는 10-9까지 허용한다. www.acmicpc.net 설계 전체 경우의 수 계산: 상자에 있는 모든 돌들 중에서 K개를 뽑는 경우의 수(total)를 계산. 같은 색상의 돌을 뽑을 확률 계산: 각 색상별로 K개를 뽑을 경우의 확률을 계산하고, 이를 모두 더하여 총합(same)을 구함. 최종 확률 계산 및 출력: 같은 색상의 돌을 뽑을 총 확률(same)을 전체 경우의 수(total)로 나누어 최종 확률을 계산하고 출력. 조합 계산 함수 (getCombination): 조합(nCr)을 계산하기 위한 함수로, 더 큰 숫자에 대한 팩토리얼 계산을 피하기 위해 단순화된 조합 계산 방식을 사용. 구현 ..

Problem_Solving 2024.01.12

프로그래머스 : 하노이의 탑 (자바, 파이썬)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 재귀적으로 가장 큰 원판을 목적지 기둥으로 옮기고, 나머지 원판들을 중간 기둥을 이용해 재배치하는 과정을 반복 n 개의 원판을 from 기둥에서 to 기둥으로 이동시키는 로직을 재귀적으로 구현합니다. n == 1인 경우, 가장 작은 원판을 바로 to 기둥으로 옮깁니다. n > 1인 경우, n - 1개의 원판을 보조 기둥(여기서는 6 - from - to로 계산)으로 옮기고, 가장 큰 원판을 to 기둥으로 옮긴 후, 보조 기둥에 있는 원판들을 다시 to 기둥으로 옮깁니다. 구현 코드 자바(Java) imp..

Problem_Solving 2024.01.12