분류 전체보기 130

[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

객체 (Object)

1. 객체의 핵심은 기능을 제공하는것 객체 지향의 가장 기본은 객체이다. 앞서 객체는 데이터와 그 데이터를 조작하는 프로시저 로 구성된다라고 했지만,실제로 객체를 정의 할때 사용되는것은 객체가 제공해야할 기능이며, 객체가 내부적으로 어떤 데이터를 갖고있는 지로는 정의 되지 않는다. * 소리크기 객체 1. 소리 크기 증가 2. 소리 크기 감소 3. 음 소거 만약 소리크기 제어 객체가 있다고 가정 시 내부적으로 소리 크기를 어떤 데이터 타입 값으로 보관하는지는 중요하지 않다. 또한 실제로 객체가 어떻게 소리 크기를 증가시키거나 감소시키는지는 알 수없다. 단지 소리크기 제어 객체는 1. 소리 크기 증가 2. 소리크기 감소, 3. 음 소거 3개의 기능을 제공한다. 2. 인터페이스와 클래스, 메시지 객체는 객체가..

TIL/객체지향 2020.11.17

[JAVA] 전화번호 목록 - 프로그래머스

풀이 : 이문제를 읽자마자 찾아본건 접두어이다... " 접두사는 어떤 단어의 앞에 붙어 뜻을 첨가하여 하나의 다른 단어를 이루는 말 " 이라고 해서 Contains 는 제외 1. hash 문제이니 만큼 hashmap 을 사용한다 인자는 String, List 2. HashMap 을 채울때 Key 값을 넣고 List 는 Key 값을 제외한 값으로 List 로 변환하여 넣는다. 3. Key 별로 List 를 Foreach로 돌려 접두어 인지 체크하여 하나라도 false 시 Break 진행 접두어 확인 방법 : IndexOf, StartWith 등등... 하지만 효율성이 0점... package com.company; import java.util.ArrayList; import java.util.Arrays..

알고리즘/JAVA 2020.11.16

[JAVA] 완주하지 못한 선수 - 프로그래머스

풀이 : 해시 파트에 있는 문제 인데 효율성이 0점 나왔다..ㅎ 1. 참여 인원에 대한 배열을 중복값을 없앤 리스트 생성 2. 리스트 인원에 대한 hashmap 에 Key 와 Value 를체크하여 값을 넣기 3. 만들어진 hashmap로 완주자를 비교하여 1이상이 된 값을 answer 에 넣고 Break 효율성이 엉망인 이유는 구글링을 하고 비교했을 때 이유를 알게되었다. -> 다중 For 문이 2개 + 중복을 없애는 Stream 구문 에의한 시간복잡도가 엄청나게 올라간것이었다.. package com.company; import java.util.*; import java.util.logging.Logger; import java.util.stream.Collectors; public class NoF..

알고리즘/JAVA 2020.11.13

[C#] 삼각 달팽이 - 프로그래머스

문제 : 정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성하시오 풀이 : 처음엔 무슨 수학공식이 있는줄 알고 열심히 공식 만들어보다가 실패해서...구글링 참고하여 코딩하게 되었다.. 나중에 java 할떄 다시 풀어보게 될것같다...ㅎ 조건 1 = 달팽이 안에 들어가는 수는 반드시 1~n 까지 합친것보다 작다! 조건 2 = ↓ → ↖ 순으로 배열(2차배열)을 채우게 된다! public static int[] solution(int n) { List answer = new List(); int[,] a..

알고리즘/C# 2020.11.10

[JAVA] 프린터 - 프로그래머스

문제 : 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린터를 개발했습니다. 이 새롭게 개발한 프린터는 아래와 같은 방식으로 인쇄 작업을 수행합니다. 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 3. 그렇지 않으면 J를 인쇄합니다. 제한사항 : 현재 대기목록에는 1개 이상 100개 이하의 문서가 있습니다. 인쇄 작업의 중요도는 1~9로 표현하며 숫자가 클수록 중요하다는 뜻입니다. location은 0 이상 (현재 대기목록에 있..

알고리즘/JAVA 2020.10.24

[JAVA] 스킬트리 - 프로그래머

문제 : 선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다. 예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다. 위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 스파크 → 힐링 → 라이트닝 볼트 → 썬더와 같은 스킬트리는 가능하지만, 썬더 → 스파크나 라이트닝 볼트 → 스파크 → 힐링 → 썬더와 같은 스킬트리는 불가능합니다. 선행 스킬 순서 skill과 유저들이 만든 스킬트리1를 담은 배열 skill_trees가 매개변수로 주어질 때, 가능한 스킬트리 개수를 return 하는 solution 함수를 작성해주세요. 제한조건 : ..

알고리즘/JAVA 2020.10.23

[JAVA] 124 나라의 숫자 - 프로그래머스

문제 : 24 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다. 124 나라에는 자연수만 존재합니다. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다. 풀이 : 3진법과 비슷해서 공책에 계속 3으로 나누기만 하다가 코딩으로 옮겼더니 디버깅 하다가 맞춰진 경우가 됬다.. 일단 10진법 수 를 3으로 나눈 나머지가 124 나라의 일의 자리가 된다 ( 나머지가 0 일 시 4로 변경) 그후 일전에 3으로 나눈 몫을 3으로 나눈 나머지를 구해 나아간다. ex) 8 = 몫 : 2, 나머지 : 2 -> 2 몫 : 0, 나머지 : 2 ->22 3으로나눈 나머지가 0인 배수들은 나누고 몫에 -1 을 진행 ex) 9 = 몫 : 3, 나머지 : 0 (4)-..

알고리즘/JAVA 2020.10.22

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

문제 : 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 풀이 : 에라토스테네스의 체! C# 에서는 Bool 배열을 만들어서 진행 하였고 Java 에서는 주어진 n 까지의 배열을 만드는 것부터 시작해서 풀게 되었다! package com.company; import java.util.Arrays; import java.util.stream.IntStream; import java.util.stream.Stream; public class Find_PrimeNumber { public static void main(String[] args) { System.out.pri..

알고리즘/JAVA 2020.10.21

[JAVA] 3진법 뒤집기 - 프로그래머스

문제 : 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하시오! 제한사항 : n은 1 이상 100,000,000 이하인 자연수입니다. 풀이 : package com.company; import java.util.Arrays; import java.util.Stack; public class TernaryFlip { public static void main(String[] args) { System.out.println(solution(45)); System.out.println(solution(125)); } public static int solution(int n) { int answer = 0; int division; ..

알고리즘/JAVA 2020.10.21