파이썬 22

프로그래머스 : 순위 검색 (자바, 파이썬)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 브루트 포스로 가능한 모든 조건의 조합을 생성하고, 이진 탐색을 통해 효율적으로 해당 조건을 만족하는 지원자 수를 찾아냄 각 info 문자열에 대해 가능한 모든 조건의 조합을 생성하고, 해당 조건에 해당하는 점수를 Map에 저장 Map의 각 값(점수 리스트)를 오름차순으로 정렬 각 query에 대해 해당 조건을 만족하는 점수의 개수를 찾기 위해 이진 탐색을 사용 이진 탐색을 통해 주어진 점수 조건을 만족하는 지원자의 수를 계산하여 결과 배열에 저장 구현 코드 자바(Java) // package pg724..

Problem_Solving 2024.01.25

백준(BOJ) 2512 : 예산 (자바, 파이썬)

2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 www.acmicpc.net 설계 이진 탐색(Binary Search)을 사용하여 예산 문제를 해결. 각 지방의 예산 요청을 받아 총 예산 범위 내에서 가능한 최대의 예산 상한액을 찾음. 예산의 최댓값을 초과하지 않는 범위에서 가능한 가장 큰 상한액을 찾아내는 것이 목표 탐색 범위를 절반씩 줄여나가면서 빠르게 최적의 해를 찾음 구현 코드 자바(Java) // package boj2512; import java.util.*; import java.io.*; public class Mai..

Problem_Solving 2024.01.24

프로그래머스 : 이진 변환 반복하기 (자바, 파이썬)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 문자열 s를 이진 변환하는 과정을 거쳐, 모든 0을 제거하고, 남은 1들의 개수에 대한 이진수로 변환하는 과정을 반복 각 변환 과정에서 제거된 0의 개수와 변환 횟수를 계산하여 반환. 이진 변환 과정은 문자열을 순회하면서 0을 제거하고, 남은 1의 개수를 이진수 형태로 변환하는 방식으로 진행. while 반복문을 사용하여 주어진 조건이 충족될 때까지 변환 과정을 반복하고, Integer.toBinaryString 메서드를 활용하여 정수를 이진수 문자열로 변환. 구현 코드 자바(Java) // packag..

Problem_Solving 2024.01.23

프로그래머스 : 짝지어 제거하기 (자바, 파이썬)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 문자열에서 같은 알파벳이 연속으로 나타나는 쌍을 제거 주어진 문자열 s를 순회하면서, 각 문자를 리스트에 추가 리스트에 이미 문자가 있고, 그 문자가 현재 문자와 같으면 연속된 쌍이므로 리스트에서 마지막 문자를 제거 문자열의 모든 문자를 처리한 후, 리스트가 비어 있으면 모든 연속 쌍이 제거된 것이므로 1을 반환하고, 그렇지 않으면 0을 반환 구현 코드 자바(Java) // package pg12973; import java.util.*; public class Solution { // public st..

Problem_Solving 2024.01.22

백준(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

백준(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