[프로그래머스] 점프와 순간 이동 - 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(자바)
·
자바/코딩테스트
k 값의 최소 인수분해 값을 구한다. 최소 인수분해보다 l의 값이 크면 나쁜 암호이고 값이 작거나 같으면 좋은 암호로 출력해준다. ​ 이 문제의 경우 알고리즘적으로는 어렵지 않다. ​ 제한부분을 보면 4 ≤ K ≤ 10100 로 단순 int 형의 범위를 벗어나기때문에 BigInteger를 사용하였다. public class Main{ // 좋은 암호 2061 public static void main(String[] args) throws IOException{ // 제한값이 1,000,000 까지라 int로 커버 불가능해 BigInteger 사용 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenize..
[백준] 집 주소 - Java(자바)
·
자바/코딩테스트
간판의 길이를 구하는 알고리즘 문제로 숫자 1은 2cm 0은 4cm 나머지는 3cm 이다. ​ 간판 처음은 1cm를 띄어서 시작하고 숫자 사이는 1cm의 간격이 존재하므로 ​ 숫자를 입력받으면 각자리수를 배열로 만들어 값을 위와 같은 조건에 따라 값을 더해주고 마지막에 +1을 하였다. public class Main { public static void main(String[] args) throws IOException{ // 집 주소 1284 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while(true) { String n = br.readLine(); int length = 1;// 호수판 길이 // 0입력이..
[백준] 핸드폰 요금 - Java(자바)
·
자바/코딩테스트
n개의 요금을 받아서 영식 요금제와 민식 요금제로 계산했을때 더 적게 나오는 요금제를 출력하는 문제이다.​단 둘의 금액이 같을경우 요금제이름 둘다 출력한다.​문제를 보면 영식요금제는 30초 미만이면 10원의 요금을 민식요금제는 60초 미만이면 15원으로 요금제를 측정한다.​29초이면 10원 30초면 20원 즉 시간/30 + 1 개념이 된다.public class Main{ // 핸드폰 요금 1267 public static void main(String[] args) throws IOException{ int ys = 0; // 영식요금제 int ms = 0; // 민식 요금제 BufferedReader br = new BufferedReader(new InputStreamReader(S..
[프로그래머스] 수박수박 - 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..
[프로그래머스] 콜라 문제 - Python(파이썬)
·
파이썬/코딩테스트
문제 이해 빈병 콜라 a개를 주면 b개를 준다. n개의 빈병을 가져다 주면 총 몇개의 빈 병을 돌려받는가 식 : n - n의 최대공약수 + n//a = n ​ n개는 내가 가지고 있는 빈 병 개수로 루프를 돌때 가지고 있는 빈병이 필요한 빈병 개수보다 작으면 탈출한다. 루프를 돌때마다 내가 가지고 있는 병으로 나올수 있는 최대 빈병수들을 더한다. def solution(a, b, n): answer = 0 while True: if n < a: break count = (n//a) * b n = n - ((n//a)*a) + count answer += count return answer
대전집주인
'코딩테스트' 태그의 글 목록 (3 Page)