문자열 7

백준(BOJ) 4949 : 균형잡힌 세상 (실버4) / 자바(Java) 풀이

문제https://www.acmicpc.net/problem/49493줄 요약스택 사용 이유: 스택은 괄호의 중첩 구조를 관리하기에 적합한 자료구조로, 여는 괄호를 스택에 쌓고 닫는 괄호는 스택에서 제거하여 짝을 맞춥니다.속도 측면: 스택을 사용하면 각 연산(삽입 및 삭제)이 O(1) 시간에 이루어지므로 전체 알고리즘의 시간 복잡도는 O(n)입니다. 이는 괄호 문자열의 길이에 비례하여 효율적으로 처리할 수 있음을 의미합니다.처리 과정: 모든 괄호 문자열을 순회하며 스택을 이용해 짝을 맞추고, 닫는 괄호를 처리할 때 스택이 비어있으면 "no"를 출력하며, 모든 처리가 끝난 후에도 스택이 비어있지 않으면 "no"를 출력합니다. 모든 테스트 케이스에 대해 유효성을 검사하여 "yes" 또는 "no"를 출력합니다..

Problem_Solving 2024.05.14

백준(BOJ) 9012 : 괄호 (실버4) / 자바(Java) 풀이

문제https://www.acmicpc.net/problem/90123줄 요약스택 사용 이유: 스택은 괄호의 중첩 구조를 관리하기에 적합한 자료구조로, 여는 괄호를 스택에 쌓고 닫는 괄호는 스택에서 제거하여 짝을 맞춥니다. 이렇게 하면 괄호의 순서를 쉽게 관리할 수 있습니다.속도 측면: 스택을 사용하면 각 연산(삽입 및 삭제)이 O(1) 시간에 이루어지므로 전체 알고리즘의 시간 복잡도는 O(n)입니다. 이는 괄호 문자열의 길이에 비례하여 효율적으로 처리할 수 있음을 의미합니다.유효성 검사: 모든 괄호 문자열을 순회하며 스택을 이용해 짝을 맞추고, 닫는 괄호를 처리할 때 스택이 비어있으면 "NO"를 출력하며, 모든 처리가 끝난 후에도 스택이 비어있지 않으면 "NO"를 출력합니다. 모든 테스트 케이스에 대해..

Problem_Solving 2024.05.14

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

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. 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

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

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

Problem_Solving 2024.01.16