전체 글 130

[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

디자인 패턴 - 전략 패턴 (Strategy Pattern)

전략 패턴 또는 정책 패턴이라고 하며 이는 실행 중에 알고리즘을 선택할 수 있게 하는 패턴 예를 들어 과일 매장에서 상황에 따른 가격할인 정책을 적용하고 있다고 가정한다. 1. 매장에 들어온 첫번째 손님 할인정책 2. 저녁시간대에 신선도가 떨어진 과일에 대한 할인정책 public class Calculator { public int calculate(boolean firstGuest, List items) { int sum = 0; for (Item item: items) { if (firstGuest) { sum += (int) (item.getPrice() * 0.9); } else if (!item.isFresh()) { sum += (int) (item.getPrice() * 0.8); } els..

디자인 패턴이란?

객체지향 설계는 소프트웨어로 해결하고자 하는 문제를 다루면서 동시에 재설계 없이 또는 재설계를 최소화 하면서 요구 사항의 변화를 수용할 수 있도록 만들어준다. 이렇듯 객체 지향 설계를 하다보면 이전과 비슷한 상황에서 사용했던 설계를 재사용 하는경우가 종종 발생 하는데, 이렇게 반복적으로 사용되는 설계는 클래스, 객체의 구성, 객체간 메시지 흐름에서 일정 패턴을 갖는다. 이러한 패턴은 다음과 같은 장점을 가진다. 1. 상황에 맞는 올바른 설계를 더 빠르게 적용할 수 있다. 2. 각 패턴의 장단점을 통해서 설계를 선택하는데 도움을 얻을 수 있다. 3. 설계 패턴에 이름을 붙임으로써 시스템의 문서화, 이해, 유지보수에 도움을 얻을 수 있다. 출처 : 개발자가 반드시 정복해야할 객체 지향과 디자인 패턴