알고리즘/JAVA 27

[JAVA] X만큼 간격이 있는 n개의 숫자 - 프로그래머스

풀이 : 1부터 n 번까지 초기값 x 를 더하고 List 에 담은 후 변환 하여 리턴 long[] answer 로 선언되어 List list 는 long 으로 변환 을 해야한다. long[] = (List).stream().mapToLong(Long::longValue).toArrray(); 변환 가능! public long[] solution(long x, int n) { long[] answer ={}; long startNum = x; List list = new ArrayList(); list.add(startNum); for (long i=1; i < n; i++) { x +=startNum; list.add((long)x); } answer = list.stream().mapToLong(Lon..

알고리즘/JAVA 2021.09.30

[JAVA] 직사각형 별찍기 - 프로그래머스

풀이 : 프로그램 공부를 시작하며 Hello world 찍기 응용으로 * 찍기를 했었던게 생각나서 자바로 다시 풀게되었다. 다중 for 문을 이용하여 가로 찍고 줄바꿈 진행 public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); for (int i=0; i < b; i++) { for (int j = 0; j < a; j++) { System.out.print("*"); } System.out.println(); } } 풀이2 : 다른사람 풀이는 역시 대단하다 Stream 을 사용하여 foreach 통한 * 찍기 및 줄바꿈 표현 public s..

알고리즘/JAVA 2021.09.29

[JAVA] 로또의 최고 순위와 최저 순위 - 프로그래머

문제 풀이 : 1. 지워진 0의 숫자의 개수를 구하고 로또가 맞은 번호의 개수를 뽑는다. 2. 위의 조건에 맞게 max 와 min 을 정한다. 최고 등수는 맞은것 + 0의 개수 에 대하여 -7을 하면 값이 나온다! Max = 맞은번호 개수 + 0의 개수의 합이 0이 아닌 경우 : 7 - (맞은 번호 + 0 의 개수) 맞은번호 개수+ 0의 개수의 합이 0인 경우 : 6 최소 등수는 0의 개수는 무조건 0이라 생각하며 맞은 경우에 대해서만 생각한다. Min = 맞은 번호가 0일 경우 6 맞은 번호가 0이 아닌경우 7 - 맞은 번호 개수 public int[] solution(int[] lottos, int[] win_nums) { int[] answer = {}; int matchCount = 0; int ..

알고리즘/JAVA 2021.07.24

[JAVA] 소수 만들기 - 프로그래머스

풀이 : 다중 For 문을 사용하여 3개의 수를 찾고 3개의 수의 합에대하여 소수인지를 판명한다. 소수 판별의 경우 제곱근 보다 적게 for 문을 진행 하여 소수 판별 진행 package com.company; public class MakePrimeNum { public static int[] nums = {1,2,3,4}; public static void main(String[] args) { int rs = solution(nums); System.out.println(rs); } public static int solution(int[] nums) { int answer = 0; int sumNum = 0; for (int i = 0; i < nums.length; i++) { for (int ..

알고리즘/JAVA 2021.07.11

[JAVA] 음양 더하기 - 프로그래머스

문제 풀이 : Sign 의 boolean 에따라 absolutes 의 숫자를 가져와 += / -= 진행 하여 값을 가져온다! public class Main { public static int[] absolutes = {4,7,12}; public static boolean[] signs = {true,false,true}; public static class Solution { public int solution(int[] absolutes, boolean[] signs) { int answer = 0; for(int i = 0; i < absolutes.length; i++) { if(signs[i]) answer += absolutes[i]; else answer -= absolutes[i]; } ..

알고리즘/JAVA 2021.06.14

[JAVA] 크레인 인형뽑기 게임 - 프로그래머스

설명 : 게임 화면은 "1 x 1" 크기의 칸들로 이루어진 "N x N" 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 "5 x 5" 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 규칙 1. 모든 인형은 "1 x 1" 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 규칙 2. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 되는 데, 이때 바구니의 가장 아래 칸부터 인형이 순서대로 쌓이게 됩니다. 규칙 3. 만약 같은 모양의 인형 두 개가 바구니에 연속해서 쌓이게 되면 두 인형은 터뜨려지면서 바구..

알고리즘/JAVA 2021.02.28

[JAVA] 같은 숫자는 싫어 - 프로그래머스

풀이 : 중복만 제거하면 쉽겟다 생각하여 TreeSet / HashSet 을 사용해볼까 했는데 원소들의 순서를 유지해야해서 포기하고 단순하게 풀이 진행 import java.util.ArrayList; import java.util.List; public class program { /* 같은 숫자는 싫어 * 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다 * */ private static int[] intArr = {1, 1, 3, 3, 0, 1, 1}; private static ..

알고리즘/JAVA 2021.02.26

[JAVA] 두 정수 사이의 합 - 프로그래머스

풀이 : 일반적으로 푼다면 For 문을 사용하여 사이의 값을 배열로 만들어 배열의 합을 구하면 되는 문제 C# 에서는 Enumable.Range 를 사용하여 배열의 시작 지점과 끝을 정하여 배열을 만들 수 있었서 자바도 있지않을까란 생각에 찾아보았지만 없다는걸 알게 되었다. 그래서 구현하기로 생각하여 Iterable 라는 인터페이스를 상속받는 클래스를 만들고 for문 없이(내부는 있음) 진행 을 목표로 다시 풀기를 진행 import java.util.Iterator; public class program { /* 두 정수 사이의 합 * 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, * solution을 완성하세요. * 예를 들어 a = 3, b = 5인 경우, 3..

알고리즘/JAVA 2021.02.25

[JAVA] 위장 - 프로그래머스

풀이 : C# 에서 풀었던기억으로 경우의 수인것은 알았으나 공식을 못풀었다... 예전에 올려놓은 것도 이해가 안됨.. 하하 1. 입지 않는다의 경우의 수를 추가한다! ex) 얼굴(동그란안경, 검정 선글라스, 입지않음) 상의(파란색 티셔츠, 입지 않음) 하의(청바지, 입지 않음) 겉옷(긴 코트, 입지 않음) 2. 각 부위별 수를 곱한다!(전체 개수 구하기) 얼굴(3) * 상의(2) * 하의(2) * 겉옷(2) 3. 최소 하루에 한개의 의상을 입으니 입지않음 의 경우의 수를(1) 뺀다. => (종류별 + 1) 들을 곱하고 마지막 -1 package com.company; import java.util.HashMap; public class SPY { static String[][] clothes = {{"y..

알고리즘/JAVA 2020.11.17