반응형

알고리즘 34

[프로그래머스 자바]문자열 뒤집기

[프로그래머스 자바]문자열 뒤집기 문제 문자열 my_string 과 정수 s,e가 매개변수로 주어질때 문자열에서 인덱스 s부터 e까지 뒤집은 문자열을 리턴하는 함수를 작성하시오. 입출력 풀이 이걸 풀기위해서는 문자열을 뒤집는 방법을 알아야한다. for문을 이용할 방법과 reverse() 를 이용한 방법이 있다. 일단 for 문을 이용한 방법은 현재 문자열을 문자배열로 받아서 s와,e사이를 스왑 하는 방법이 있고 두번째 방법은 StringBuffer / reverse()를 사용하여 그부분만 문자열을 뒤집는 방법이 있다. 내가 선택한 방법은 두번째 방법을 선택하여 주어진 문자열을 총3개의 문자열로 나누었다. 주어진 문자열을 str이라하면 ans1=str(0,s) 까지 자른거 하나 ans2=str(s,e+1)..

[백준 1806] 부분합

[백준 1806] 부분합 문제 10000 이하의 자연수로 이루어진 길이 n짜리 수열이 주어진다 이 수열에서 연속된 수들의 부분합 중에 그 합이 s 이상이 되는것 중 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오 입력 첫줄에 n과 s가 주어진다. 둘째 줄 에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분된다. 출력 첫 줄에 구하고자 하는 최소의 길이를 출력하며 만약 없으면 0을 출력한다. 풀이 투포인트를 이용하여 풀었다 합 s에 이상이 되는 부분합의 개수를 카운트할 변수로 now와 그 갯수를 넣을 리스트 ans를 만들었다 일단 기본적으로 투포인트와 같은 방식으로 진행한다 while문을 이용하여 현재까지 의 합이 도 달해 야합보다 작거나 end값이 n 보다 작을 때 sum+=data [end]하고..

[프로그래머스 자바] 9로 나눈 나머지

[프로그래머스 자바] 9로 나눈 나머지 문제 음이 아닌 정수를 9로 나눈 나머지는 그 정수의 각 자리 숫자의 합을 9로 나눈 나머지와 같다 이를 이용하여 음이 아닌 정수가 문자열로 주어질 때 이 정수를 9로 나눈 나머지를 return 하여라 입출력 풀이 문자열의 길이가 정수타입이 담을수 있는 값보다 클 수도 있기에 각자릿수 합을 구해서 9로 나눈 나머지를 구해야 한다 내가 생각하기에 방법은 2가지가 있었다 첫번째 방법으로는 문자열을 charAt()를 축출하고 축출한 값을 정수로 바꾸어 합을 구하는 방법이다 이때 문자형을 정수형을 바꾸기 위해서는 Character.getNumbericValue()를 사용해야 한다 두 번째 방법은 문자열을 charAt로 축출 후 숫자로 변형 없이 더하는 방식이다 이때 주의해..

[백준 파이썬] 2505번 두 번 뒤집기

[백준 파이썬] 2505번 두 번 뒤집기 https://www.acmicpc.net/problem/2505 2505번: 두 번 뒤집기 첫줄에는 숫자판의 크기를 나타내는 정수 N (5 ≤ N ≤ 10,000)이 주어진다. 그 다음 줄에는 두 개의 구간이 뒤집혀진 놀이판의 상태를 나타내는 숫자들이 하나의 공백을 두고 나타난다. www.acmicpc.net 문제 입력 -첫 줄에는 숫자판의 크기를 나타내는 정수 n이 주어진다 -두 번째에는 두 개의 구간이 뒤집힌 놀이판의 상태를 나타내는 숫자들이 하나의 공백을 두고 나타난다 출력 첫 두줄에는 뒤집어야 할 구간을 차례대로 출력해야 한다 각 줄에는 구간[i, j]을 나타내면 이는 i와 j를 빈칸 사이에 두고 출력해야 하면 답은 항상 존재한다 풀이 -뒤집는 구간을 선..

[프로그래머스 자바]콜라츠 수열 만들기

[프로그래머스 자바] 콜라츠 수열 만들기 문제 -모든 자연수 x에 대해서 현재값이 x 이면 x가 짝수일 때 2로 나누고 홀수 일대에는 3*x+1 하여 x값에 반환하는 과정을 반복하면 언제 가는 x가 1이 되는지 묻는 문제를 콜라츠 문제라고 한다 위 과정에서 거쳐간 모든 수를 기록한 수열을 콜라츠 수열이며 이 콜라츠 수열을 return 하는 solution 함수를 완성하라 입력, 출력 풀이 -콜라츠 수가 얼마나 나올지 알 수 없기에 동적 배열이 필요하다고 판단해서 ArrayList를 사용하였다 문제의 조건에 따라 짝수일 때는 2로 나누고 홀수 일 때에는 3*x+1을 한 값을 ArrayList로 만든 배열에 추가하는 과정을 while 문을 이용하여 반복하였다. while문의 조건은 x값이 1이 아니면 계속 ..

[백준 파이썬] 19598 최소 회의실 개수

[백준 파이썬] 19598 최소 회의실 개수 문제 n개의 회의를 모두 진행할 수 있는 최소 회의실 개수를 구하라는 미션을 받았다. 각회의는 시작과 끝 나는 시간이 주어진다. 한 회의실에서 동시에 2개의 회의 진행은 불가능하다. 회는 중간에 중단될수 없으며 끝나야지 다음 회의를 진행할 수 있다. 회의 시작 시간은 끝나는 시간보다 항상 작다 입력 첫줄은 배열의 크기 n 둘째 줄부터 공백사이를 두고 회의 시작 시간과 끝나는 시간이 주어진다. 출력 최소 회의실 개수를 출력한다. 풀이 정답을 넣을 리스트를 만들고 처음 시작할 때 아무런 조건 없이 회의실을 배정받을 수 있다 그 후부터는 배정받은 회의의 끝나는 시간을 다른 회의들의 시작시간하고 비교하여 그 자리를 대체하거나 새로운 회의실을 배정받는 식으로 문제를 풀..

[백준 파이썬]17140 이차원 배열과 연산

[백준 파이썬]17140 이차원 배열과 연산 문제 입력 첫째 줄에 r,ck가 주어지며 둘째 줄부터 배열 A에 들어 있는 수가가 주어진다 출력 A[r][c]=k 가 되기 위한 최소 시간을 출력하고 만약 100초가 지나도 k에 도달하지 못한다면 -1을 출력한다 풀이 1. 행과 열의 갯수를 저장 2. 조건에 R 연산과 C연산을 수행하면 된다 3. 이때 R 연산과 C연산은 방식은 서로 같지만 진행하는 시작점이 행이냐 열이냐에 차이이다 그렇기에 일단 행에 대한 연산을 완성하고 그 후 열과 행을 바꿔서 출력해 줄 수 있는 함수를 C연산할 때 추가해 주면 R연산에 사용한 방법으로도 C연산을 돌릴 수 있다 4. R연산할 때 나는 딕셔너리를 이용하여 현재 행에 대해서 원소의 개수값을 카운트하였고 그 후 (여기 저 주의할..

[삼성 sw 파이썬] 19113 식료품 가게

[삼성 sw 파이썬] 19113 식료품 가게 문제 식료품점 주인이 25% 할인된 가격으로 상점의 모든 품목을 판매하기로 하였다. 즉 각 품목은 정상 가격의 정확히 75%로 이며 모든 물건의 정상 가격은 4의 배수인 정수이고 할인된 가격 역시 모두 정수이다. 가격표의 출력을 확인하기 위해서 프린터로 돌아와 보니, 공교롭게 프린터는 모든 물품의 할인가격과 정상가격을 한꺼번에 오름차순으로 정렬한 뒤 순서대로 출력하여 하나의 출력물 더미를 만들었습니다. 예를 들어, 정상가격이 20, 80, 100인 경우 할인가격은 15, 60, 75이며 프린터의 인쇄 출력 더미는 오름차순으로 정렬된 15, 20, 60, 75, 80, 100 가격표들로 구성됩니다. 입력 첫 줄 TC가 주어진다 두 번째 줄부터 각 테스트 케이스의..

[프로그래머스 자바] 문자열 겹처쓰기

[프로그래머스 자바] 문자열 겹처쓰기 https://school.programmers.co.kr/learn/courses/30/lessons/181943 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2개의 문자열과 정수s가 주어지는데 첫번째 문자열의 인덱스s부터 두번째 문자열 바꾼 문자열을 리턴하는 문제이다 일단 이문제를 풀기 위해서는 문자열의 길이를 알아야 하며 그리고 인덱스 번호를 기준으로 슬라이싱 하거나 문자 하나하나 축출하여 합칠수 있다 내가 선택한 방법은 인덱스 번호를 기준으로 문자열을 슬라이싱 하는거다 문자열 슬라이싱 하기위해서는 substr..

[프로그래머스 자바] 대소문자 바꿔서 출력하기

프로그래머스 대소문자 바꿔서 출력하기 https://school.programmers.co.kr/learn/courses/30/lessons/181949 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 일단 문제를 풀기전에 대문자 소문자를 구분할 방법을 알아야하고 그다음 대문자를 소문자로 소문자로 대문자로 바꿀수 있는 방법을 알아야한다 대문자 소문자 구별 메소드 Character.isUpperCase(변수) 메서드 =>대문자일 경우 true를 반환하고 아니면 false를 반환한다 Character.isLowerCase(변수) 메서드 =>소문자일 경우 tru..

반응형