코딩테스트37 프로그래머스 Level2 요약정리 (정답률 높은 문제 - 2~8번) JadenCase 문자열 만들기 - // 각 문자열을 쪼개서 " " 나오면 다음값을 바꾸기 최솟값 만들기 - // 낮은수랑 큰수랑 곱해야되는 알고리즘 올바른 괄호 - 일반적인 stack 문제이지만 효율성을 생각해야됨 // 효율성 = split("") 보다는 toCharArray() 캐릭터로 접근 // Stack에 '(' 하나의 문자만 누적된다면 자료구조를 사용하지 않고 int변수에 갯수만 +/- 시키는 것이 유리 이진 변환 반복하기 - // 재귀함수, 10진 -> 2진 만들기 String binary = Integer.toString(n,2); 숫자의 표현 - 반복문 다음 큰 숫자 - 현재의 숫자의 비트의 수가 4이면 현재의 수보다 크면서 비트수가 동일한 최소값을 구하는 문제 // Integer.bitC.. 2023. 3. 24. 자바 10 진수 -> 2진(Integer, String) 10진수를 -> 2진수 문자열로 radix : 몇진수로 할 것인지 , 16을 입력하면 16진수로 변환 2진수 문자열을 -> 2진수 숫자로 2진수를 -> 10진수로 Integer.parseInt 는 10진수로 만들어줌 ( 2진 -> 10진, 8-> 10진 등 가능) ex ) Integer.parseInt("1010", 2) -> 10 출력 - 문자열이 8진이면 , 8 10진수를 2진수로 바꿨을때 1비트의 개수 Integer.bitCount(정수) 정수를 입력하면 2진수에서 1의 비트가 몇개인지 리턴함 2023. 3. 24. 효율적인 피보나치 피보나치 (fibonacci) 0번째와 1번째에 값으로 0과 1이 주어진다. 그다음 번째는 현재 번째의 뒤의 두 값을 더하는값이 된다. 2번째 = 0번째 + 1번째, 3번째 = 2번째 + 1번째 재귀를 이용한 피보나치 3번째 값의 동작 -> 2번째 + 1번째 (값 1) -> 2번째 값은 -> 1번째 값 (값 1) + 0번째 값 (값 0) = 값(1) -> 2번째 (값 1) + 1번째 (값 1) = (값 2) 4번째 값의 동작 -> 3번째 + 2번째 -> 3번째 값은 -> 2번째 + 1번째 (값 1) -> 2번째 값은 -> 1번째 값 (값 1) + 0번째 값 (값 0) = 값(1) -> 2번째 (값 1) + 1번째 (값 1) = (값 2) -> 2번째 값은 -> 1번째 값 (값 1) + 0번째 값 (값 0.. 2023. 2. 9. 자바(HashMap) 해시맵을 이용한 알고리즘 문데를 풀면서 알게된 메서드 or 정보 getOrDefault() HashMap a = new HashMap(); a.get(키값) => 키값이 저장하고 있는 값이 return ( 'age', 20) a.get('age') => 20 리턴 a.getOrDefault('name',0) => get()와 비슷하지만 name이란 키가 없다면 0을 리턴한다. (있다면 name 값 리턴) equals() 결과값은 무엇일까 ? false 이다. 결과값은 무엇일까? true 이다. 두 결과가 다른 이유는 간단하다. ArrayList는 데이터를 저장할 때 순서가 존재하기에 순서가 다르면 다른 객체이다. 하지만 HashMap은 순서가 존재하지 않고 오로지 키와 값의 형태로만 존재하기 때문에 순서.. 2023. 2. 4. Iterator vs Stream 최근 스트림을 배우면서 스트림을 편리함을 점점 느끼고 있었다. 편리함은 상대적이다. 그래서 Iterator랑 스트림이랑 코드의 길이, 가독성을 비교 해보는 시간을 가졌다. https://github.com/ccw7016/origin-compare-to-stream GitHub - ccw7016/origin-compare-to-stream: copare! copare! Contribute to ccw7016/origin-compare-to-stream development by creating an account on GitHub. github.com 확실히 차이가 많이 났다. 개인적으로 좋았던 점은 스트림을 쓰며 푼 문제를 Iterator으로 풀어보니 확실히 생각해야 될 부분이 많았고 기본문법에 대한 이.. 2023. 1. 9. SW Expert academy 백만장자프로젝트 [자바] 나타날수 있는 공식 3가지 1. 10 7 6 // 마지막 까지 작아져서 사는게 손해 2. 3 5 9 // 마지막이 제일 값이 높아 마지막 전까지 사놓고 마지막에 팔기 3. 1 2 3 1 2 // 1 2 사고 3에 2개 팔고 그 다음 1에 사고 2에 팔고 tip 1) Recursion을 이용하자 1) 가장 높은 값은 미리 Array.sort()를 통하여 높은값 변수에 두고 선언한다. 2) for문을 돌며 가장 높은값을 찾는다. (But 높은 값이 첫번째 일 경우 그 값을 빼고 다시 계산) 1. 응용 // 큰 값이 첫 번째 // 큰 값이 첫 번째로 계속 나올경우 이익이 없음 0원 2. 응용 // 큰 값이 마지막 // 큰 값이 마지막이다? max값 == length-1 -> 바로 return 이익; 3.응용 .. 2022. 11. 17. [Level 1] 자연수 뒤집어 배열로 만들기 class Solution { public int[] solution(long n) { String s =""+n; //String에 n 추가 int[] answer = new int[s.length()];//입력받은 숫자의 길이만큼 int cnt=0; while(n>0) { answer[cnt]=(int)(n%10);//12345 -> 나머지 5 -> 4 -> 3 -> 2 ->1 n/=10; // n=1234 -> 123 -> -> 12 -> 1 cnt++; } return answer; } } 2022. 8. 11. [Level 1] 시저 암호 class Solution { public String solution(String s, int n) { String answer = ""; for(int i=0; i E if((6496 && ne122) ? (char)(ne+n-122+96) : (char)(ne+n); } } return answer; } } /* 1. 문자열에서 하나씩 검사 split("") 2. 문자의 개수만큼 반복문을 돌림 3. 문자의 아스키코드값으로 변환하여 n만큼 이동 4. 문자를 합친다. */ /* 문자를 ASCII 코드로 바꾸기 char형을 (int) 강제 형 변환 아스키 코드에서 대문자번호와 소문자번호만 구별할 수 있어야함 A = 65 Z = 90 a = 97 z = 122 */ 2022. 8. 11. [Level 1] 로또의 최고 순위와 최저 순위 import java.util.*; class Solution { public int solution(String dartResult) { int answer = 0; double[] result = new double[3]; //다트 기회는 3번 String[] c = dartResult.split(""); //각 문자별 구별 int num=0; for(int i=0; i1&&c[i-2].equals("1")&&c[i-1].equals("0")) result[num-1] = 10; //숫자 10 구별 break; case "D": result[num++]=Math.pow(Integer.parseInt(c[i-1]), 2); if(i>1&&c[i-2].equals("1")&&c[i-1].equals("0.. 2022. 8. 11. 이전 1 2 3 4 5 다음