Computer Sciences/Problem Solve(155)
-
[Programmers] 이진 변환 반복하기
https://school.programmers.co.kr/learn/courses/30/lessons/70129 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 이진수인 문자열이 주어진다. 이 문자열의 0을 모두 제거하여 1로만 구성된 문자열로 만든다. 그리고 이 문자열의 길이를 이진수로 바꾼다. 문자열이 1이 될 때까지 이를 반복한다. 이 과정에서 제거된 0의 개수와 변환 횟수를 구하여 반환하면 된다. 코드 1 - 이진 변환 직접 하기 class Solution { private int count = 0; private int zeros = ..
2023.08.07 -
[Programmers] 올바른 괄호
https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 스택 활용 문제로 대표적인 괄호 짝 맞추기 문제이다. 문자가 여는 괄호면 스택이 넣으면 된다. 만약 닫는 괄호라면 스택의 맨 위 문자가 여는 괄호라면 pop 하면 되고 아니라면 그대로 닫는 괄호를 스택에 넣으면 된다. 이 로직을 반복하다가 마지막에 스택이 비어있는 경우가 괄호의 짝이 모두 맞은 경우이다. 코드 import java.util.Stack; class Solution { bo..
2023.08.07 -
[Programmers] 최솟값 만들기
https://school.programmers.co.kr/learn/courses/30/lessons/12941 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 길이가 같은 두 배열이 주어진다. 두 배열의 원소를 하나씩 곱했을 때 합이 최소가 되도록 구현하면 된다. 정렬을 사용하면 간단하게 해결된다. 두 배열을 정렬한 뒤 한 쪽의 가장 작은 값과 다른 쪽의 가장 큰 값을 곱해서 누적하면 최소합이 된다. 코드 import java.util.Arrays; class Solution { public int solution(int []A, int []..
2023.08.07 -
[Programmers] JadenCase 문자열 만들기
https://school.programmers.co.kr/learn/courses/30/lessons/12951# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 숫자, 영문자, 공백(" ")으로 구성된 문자열이 주어진다. 첫 글자가 문자면 대문자로 바꾼 형태로 변환하여 반환하는 함수를 만들면 된다. 처음에는 평소 하던대로 split(" ")을 사용했다가 공백 조건에서 오류가 발생했다. 그래서 공백 처리를 어떻게 할까 고민하다가 공백을 만나면 그냥 추가하는 방식으로 구현했다. 공백을 -로 대체하고 예시를 들자면 This---is-sample 이..
2023.08.07 -
[Programmers] 최댓값과 최솟값
https://school.programmers.co.kr/learn/courses/30/lessons/12939 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 말 그대로 공백을 기준으로 나누어진 숫자로 구성된 문자열에서 최솟값과 최댓값을 구하면 되는 문제이다. 문제 자체가 쉽기 때문에 최댓값, 최솟값을 구하는 방법에 대해서 생각해보자. 1. 선형 탐색 단순하게 요소 모두를 탐색하면서 최댓값과 최솟값을 비교해보면 되는 방법이다. 항상 O(n)이 소요된다. class Solution { public String solution(String s) ..
2023.08.04 -
[Programmers] 달리기 경주
https://school.programmers.co.kr/learn/courses/30/lessons/178871 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 처음에는 단순히 순서를 바꾸기 좋은 리스트를 활용해 위치를 변경하는 방식으로 풀었다가 시간 초과가 났다. 그래서 HashMap을 이용한 풀이로 바꾸어 해결하였다. 문제 조건에 players는 최대 5만 명이며 callings는 최대 100만이다. 따라서 리스트 방식으로 순차 접근하여 풀면 최악의 경우인 꼴등(5만등인) 선수만 100만번 부른 경우 5만 * 100만이라는 어마어마한 탐색..
2023.08.04