[프로그래머스] 괄호 회전하기 - Java(자바)
·
자바/코딩테스트
문제 이해 (),{},[] 세종류의 괄호로 구성된 문자열이 존재하는데 문자열을 회전시켰을때 괄호가 올바른 괄호 문자열이 몇번인지 구하여라 문자열 회전 문제는 "[](){}" + "[](){}" 이런식으로 두개의 문자열을 합하여 index 0부터 문자열 길이만큼 비교하고 index 값을 올려서 반복 비교한다. 괄호의 완성은 "{()}" 이와 같이 괄호를 열었으면 제대로 닫아야 한다. "{(})" 이런 식의 괄호는 열고 닫았지만 닫는 순서가 잘못되었다. 문자열의 값을 스택에 한문자씩 집어넣고 한문자씩 꺼내면서 "()", "{}","[]" 이와 같이 스택의 마지막값이 지금 문자열의 값의 열고 닫는 괄호가 맞는지 비교한다. 스택에서 하나씩 꺼내 완성된 괄호가 모두 존재 하면 스택에는 아무런 값이 미존재 해야한다..
[프로그래머스] 멀리 뛰기 - Java(자바)
·
카테고리 없음
문제 이해 멀리 뛰기 방법을 구하는것 같지만 피보나치 수열을 나타낸다. 1, 2, 3 ,5 ,8 ,13 ~~ n 은 (n-2) + (n-1) 처럼 증가한다. 나온 방법에서 %1234567 의 나머지를 구하여라 import java.util.*; class Solution { public int solution(int n) { List list = new ArrayList(); list.add(1); list.add(2); //1, 2 ,3, 5 for(int i = 2; i
[프로그래머스] 구명보트 - Java(자바)
·
자바/코딩테스트
문제 이해 구명보트는 한번에 최대 2명씩 밖에 못탄다. limit 무게보다 낮으면 2명 높으면 1명씩 타야한다. 무게가 낮은 순서대로 오름차순하기 무게가 낮은 사람을 left 변수, 높은 사람을 right 변수 선언 무게가 제일 낮은 사람과 제일 높은 사람의 합이 limit보다 낮거나 같으면 탈출하였기에 left++, right-- 두 무게의 합이 더 높다면 right-- 로 더 낮은 사람과 매칭을 시켜서 무인도에서 한명씩 나오게 한다. import java.util.*; class Solution { public int solution(int[] people, int limit) { int answer = 0; int left = 0; int right = people.length - 1; Arrays..
[프로그래머스] 영어 끝말잇기 - Java(자바)
·
자바/코딩테스트
문제 이해 n명이 영어 끝말잇기중에 있다. 배열에서 영어 단어를 하나씩 말합니다. 영어 단어의 끝으로 시작되는 단어를 사용하지 않거나, 이전에 사용한 단어를 사용하면 탈락 탈락되는 사람이 없을시 [0,0] 탈락되는 사람이 있다면 해당 단어는 n명의 사람중 몇번째 단어를 말하던 중 탈락인지 구하시오 리스트에 사용한 영어 단어를 하나씩 넣는다. 만약 리스트에 포함된 영어단어를 말하면 탈락 영어 단어를 말할때 마다 앞의 단어의 마지막 문자로 시작하지 않을 경우 탈락 n 의 몇번째 단어인지 구하기 : 사람 인원은 1명 이상임으로 +1 , n으로 나눴을때 나머지가 0이되는 몫이 n번째 사람의 단어 순서이다. 0이 되지 않으면 순서는 n의 몫과 동일한 위치에 있기에 +1을 한다. import java.util.*;..
[프로그래머스] 점프와 순간 이동 - Java(자바)
·
자바/코딩테스트
문제 이해 아이언 슈트는 K 칸 * 2 의 위치까지 순간 이동 가능 순간이동이 아닌 K 칸씩 앞으로 가려면 K 만큼의 건전지가 소모됨 최소한의 건전지 사용량으로 가려면 어떻게 해야하는가? 0에서 시작이 아닌 나는 n에서 0까지 가는 방식으로 선택했다. n 에서 짝수이면 /2 홀수이면 -1 건전지 사용량 +1 의 방식으로 거리가 0이 될때까지 반복한다. import java.util.*; public class Solution { public int solution(int n) { int ans = 0; while(n != 0){ if(n % 2 == 0){ n /= 2; }else{ n -= 1; ans++; } } return ans; } }
[프로그래머스] 짝지어 제거하기 - Java(자바)
·
자바/코딩테스트
문제 이해 같은 알파벳 소문자가 짝지어 이루어져있으면 그 둘을 제거한다. 제거된 알파벳의 앞뒤로 문자열을 이어 붙인다. 위와 같이 반복하였을때 문자열이 다 제거되면 1 아니면 0 스택을 이용하면 문자열을 스택을 넣기전 이전 스택의 값(peek)를 통해 같은 값이면 pop 없으면 push로 관리 import java.util.*; class Solution { public int solution(String s) { int answer = -1; Stack stack = new Stack(); for(int i = 0; i 0 ? 0 : 1; } }
[프로그래머스] 숫자의 표현 - Java(자바)
·
자바/코딩테스트
문제 이해 자연수 n 표현하는 자연수들의 개수를 구하여라(단 연속된 자연수로) 1 ~ n 까지의 자연수의 연속된 합이 n이 되는 경우를 구한다. 배열에 1 ~ n까지 값을 세팅 1 부터 n까지 값을 더하면서 sum이 n과 같으면 answer++ sum 이 n보다 작으면 sum에서 left인덱스 위치의 값을 빼고 left index를 증가시킨다. sum 이 n보다 크면 sum에서 right인덱스 위치의 값을 더하고 right index를 증가시킨다. 배열을 다 소모하기전까지 반복 class Solution { public int solution(int n) { int answer = 0; int[] numList = new int[n]; for(int i = 0; i n){ sum -= numList[le..
[프로그래머스] 올바른 괄호 - Java(자바)
·
자바/코딩테스트
문제이해 괄호의 종류는 "(", ")" 로 한가지 이다. 문자열을 한글자씩 잘라서 모양을 비교한다. "(" 열었으면 +1 ")" 닫았으면 -1 로 숫자를 구한다. -1이 되면 ")" 닫은 괄호가 더 많으므로 잘못된 괄호로 false 로 나간다. 최종 cnt 값이 0이 아니면 열고 닫음의 개수가 동일하지 않으므로 false class Solution { boolean solution(String s) { boolean answer = true; String[] word; // 스트링을 담을 배열 //사실상 가장 간단함 word = s.split(""); //배열에 한글자씩 저장하기 int cnt = 0; for(int i = 0; i
[프로그래머스] 수박수박 - Java(자바)
·
자바/코딩테스트
package ex3; import java.util.Scanner; public class test1 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc =new Scanner(System.in); int n = sc.nextInt(); for(int i = 1; i
[프로그래머스] 예상 대진표 - Python(파이썬)
·
파이썬/코딩테스트
문제 이해 N명의 선수들중 A선수와 B선수가 붙게되는 라운드를 구하여라 두선수는 무조건 이겨서 올라간다. 이기면 앞션 참가자 번호의 첫번째 번호로 올라간다. ​ 경기를 이기면 앞자리 번호로 이동하는데 번호 생성 규칙이 A/2 의 올림이다. 승부를 볼때마다 A와 B의 차례인지 확인한다. A가 2의 n승일때 B = A-1 , B가 2의 n승일때 A = B-1 이면 A와 B의 승부 차례이다. import math def solution(n,a,b): answer = 1 while True: if a % 2 == 0 and b == (a-1): break elif b % 2 == 0 and a == (b-1): break else: a = math.ceil(a/2) b = math.ceil(b/2) answer..
[프로그래머스] 올바른 괄호 - Python(파이썬)
·
파이썬/코딩테스트
문제 이해 괄호가 바르게 짝지어져야한다. '('로 열었으면 ')'로 닫아야한다. 괄호의 개수는 '(',')' 동일해야한다. ​ 이 문제의 경우 '(' 가 담겨있는 left리스트 하나와 ')'가 담겨있는 right리스트를 만들었다. 리스트에 담으면서 괄호의 짝이 맞는지 count 변수로 '(' 경우 +1 ')'경우 -1 괄호가 잘 닫히면 0 아니면 -1로 체크하였다. def solution(s): answer = True left = [] right = [] count = 0 for i in s: if i == '(': left.append(i) count += 1 else: right.append(i) count -= 1 # 괄호를 열고 닫았는지 확인 if count == -1: answer = Fals..
[프로그래머스] 숫자 짝궁 - Python(파이썬)
·
파이썬/코딩테스트
문제 이해 X와 Y의 숫자를 비교하여 같은 숫자를 찾아라 공통으로 나타나는 숫자를 가장 큰 정수로 리턴해라 정수는 0이 될수 없다. 공통 숫자가 없으면 -1 ​ 0 ~ 9 까지 숫자를 담을 리스트 n1, n2를 생성하여 해당하는 숫자 위치에 +1 추가 한다. n1, n2를 비교하며 n2가 크면 str(i)*n1[i] 아니라면 str(i)*n2[i] 로 문자열을 붙여준다. def solution(X, Y): answer = '' n1 = [0,0,0,0,0,0,0,0,0,0,0] n2 = [0,0,0,0,0,0,0,0,0,0,0] for i in X: n1[int(i)] += 1 for i in Y: n2[int(i)] += 1 for i in range(9,-1, -1): n = n1[i] if n1[i..
대전집주인
'프로그래머스' 태그의 글 목록 (3 Page)