CodingTest 123

[프로그래머스 / Java] Lv.2 의상

Question https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithm의상 종류별 개수를 저장하기 위해 HashMap을 사용한다.HashMap은 key-value 구조로 데이터를 저장key는 중복을 허용하지 않으므로 같은 종류가 여러 번 입력돼도 하나의 key로 묶어서 개수를 누적할 수 있다.향상된 for문으로 clothes 배열을 순회한다.map.getOrDefault(종류, 0) + 1을 사용해 이미 해당 종류가 있으면 개수를 +1, 없으면 0에서 +1로 시작해 저장한다.곱의 법칙을 적용..

[프로그래머스 / Java] Lv.1 시저 암호

Question https://school.programmers.co.kr/learn/courses/30/lessons/12926 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithm문자를 n만큼 미는 방법은, (현재문자 - 기준문자 + n) % 26 + 기준문자 공식 사용기준문자 : 소문자면 'a', 대문자면 'A'공백 ' '은 그대로 둔다.알파벳 범위를 벗어나면 % 26으로 처음부터 다시 시작 (예 : z에서 1만큼 밀면 a)asnwer 값에 계속해서 문자를 더해야 하므로, StringBuilder를 사용한다.String은 불변 객체라 + 연산 시마다 새로운 객체를 만들고 복사 → 반복 시 성능 ..

[프로그래머스 / Java] Lv.1 크기가 작은 부분문자열

Question https://school.programmers.co.kr/learn/courses/30/lessons/147355 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithmsubstring() 메서드를 사용해서 t의 첫번째 인덱스 부터 p의 길이만큼을 가져와 비교한다. 문자열로된 두 숫자를 비교해야 하므로, parseLong()메서드를 사용해 String에서 long으로 변환해준다.for문을 이용해 부분 문자열의 시작 인덱스를 0부터 t.length() - p.length()까지 반복한다.i 매 반복마다 substring(i, i + p.length())로 부분 문자열을 추출하고, pars..

[프로그래머스 / Java] Lv.1 둘만의 암호

Question https://school.programmers.co.kr/learn/courses/30/lessons/155652 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithmStringBuilder 사용문자열을 반복해서 더해야 하므로 StringBuilder를 사용해 성능을 높임StringBuilder는 새로운 객체를 생성하지 않고도 기존 배열에 추가 가능하다.주어진 문자열 s의 각 문자를 순회하면서 문자를 변환한다.skip에 포함되는 문자열은 세지 않고 넘어가야 하기때문에 count 변수를 활용해 skip에 없는 알파벳을 index만큼 건너뛰었는지 카운트 해준다.while 문을 사용해 co..

[프로그래머스 / Java] Lv.2 n^2 배열 자르기

Question https://school.programmers.co.kr/learn/courses/30/lessons/87390 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithm구해야 하는 1차원 배열의 크기만큼 answer 배열을 생성한다.구하려고 하는 1차원 배열 들어갈 값을, 가상의 2차원 배열의 행과 열에 속한 값으로 계산해서 가져오면, 실제 2차원 배열을 만들지 않고도 답을 구할 수 있어서 메모리를 절약할 수 있다.1차원 배열의 인덱스를 n으로 나눗셈(/)과 나머지(%) 연산을 통해 가상의 2차원 배열의 (행, 열) 좌표로 변환할 수 있다.예를 들어, n=3 일때 1차원 배열 index에..

[프로그래머스 / Java] Lv.2 이진 변환 반복하기

Question https://school.programmers.co.kr/learn/courses/30/lessons/70129 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithmwhile문을 사용해 주어진 s의 길이가 1이 될 때 까지 반복한다.문자열 s를 한 글자씩 순회한다.0의 개수를 세서 누적한다. (총 제거된 0의 개수로 쓸 예정)1의 개수를 센다.1의 개수를 이진수 문자열로 변환하여 s에 다시 저장한다.Integer.toBinaryString() 메서드를 사용한다. 변환 횟수를 1 증가시킨다.반복이 끝나면 [이진 변환 횟수, 제거된 0의 개수]를 반환한다.Codeclass Solution..

[프로그래머스 / Java] Lv.1 3진법 뒤집기

Question https://school.programmers.co.kr/learn/courses/30/lessons/68935 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithm10진수 n을 3진수로 변환한다. toString(int i, int radix) 메서드를 사용한다.이때 radix를 3으로 지정하여 10진수 값을 3진수 형태의 문자열로 바꾼다. 변환된 3진수 문자열을 뒤집는다.StringBuilder를 사용해 문자열을 뒤집는다.뒤집힌 3진수 문자열을 다시 10진수 정수로 변환한다. Integer.valueOf(String s, int radix) 메서드를 사용한다.뒤집힌 문자열을 3진수..

[프로그래머스 / Java] Lv.1 최대공약수와 최소공배수

Question https://school.programmers.co.kr/learn/courses/30/lessons/12940 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithm입력값 준비두 정수 n, m이 주어진다.두 수 중 큰 값과 작은 값을 변수에 할당a = Math.max(n, m)b = Math.min(n, m)유클리드 호제법을 사용해 최대공약수(GCD) 구하기b가 0보다 클 때까지 반복:temp = a % b (a를 b로 나눈 나머지)a = bb = temp반복문이 끝나면 a가 최대공약수(GCD)최소공배수(LCM) 구하기lcm = n * m / gcd(여기서 gcd는 앞에서 구한 최대공..

[프로그래머스 / Java] Lv.2 JadenCase 문자열 만들기

Questionhttps://school.programmers.co.kr/learn/courses/30/lessons/12951 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithmStringBuilder()를 사용해 JasdenCase로 바꾼 문자열을 저장한다.String[] 배열을 사용하면, split() 메서드를 사용하거나, substring() 사용할때 새로운 배열 객체가 생성되어 불필요하게 메모리 낭비 가능isFirstChar 변수 초기화단어의 첫 문자인지 판단하는 변수(isFirstChar)를 true로 초기화한다.입력 문자열을 한 글자씩 순회문자열을 char 배열로 변환하여 한 글자씩 확인..

[프로그래머스 / Java] Lv.2 최댓값과 최솟값

Question https://school.programmers.co.kr/learn/courses/30/lessons/12939 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithms.split(" "); 함수를 사용해 주어진 문자열 s를 공백을 기준으로 분리하여 문자열 배열에 저장한다.배열의 첫 번째 값을 정수형으로 변환하여, 최댓값(max)과 최솟값(min)의 초기값으로 설정한다.정수형으로 저장하기 위해 Integer.parseInt(str); 함수를 사용한다.향상된 for문을 사용해 각 문자열 배열에 저장된 s를 순회하며 최댓값과 최솟값을 찾는다.먼저, 문자열 s를 Integer.parseInt..