Language 69

[프로그래머스] 신규 아이디 추천

https://programmers.co.kr/learn/courses/30/lessons/72410 class Solution { public String solution(String new_id) { String answer = new_id //1. 소문자로 치환 .toLowerCase() //2. 알파벳 소문자, 숫자, -, _, . 제외하고 모든 문자 제거 .replaceAll("[^\\.\\-_0-9a-z]", "") //3. 마침표.이 2번 이상 연속된 부분 하나로 치환 .replaceAll("[.]+", "."); //4. 마침표가 처음이나 끝에 위치한다면 제거 if (answer.startsWith(".")) answer = answer.substring(1); if (answer.ends..

Language/JAVA 2022.01.29

[프로그래머스] 시저 암호

처음에 n이 커서 알파벳 범위를 여러 번 도는 경우를 생각하지 못해서 통과하지 못했다. n 대신 26으로 나눈 값 k를 더해줘서 알파벳 범위 안에서만 돌도록 조정해주었고, 대문자와 소문자로 경우를 나누어서 Z나 z는 추가로 -26을 해주었다. class Solution { public String solution(String s, int n) { String answer = ""; //char배열로 바꿈 char[] arr = s.toCharArray(); for (int i = 0; i < arr.length; i++) { //알파벳 안에서만 돌면 되므로 26으로 나누어서 나머지값만 더함 int k = n % 26; //대문자인데 더했을 때 'Z'보다 크거나, 소문자인데 더했을 때 'z'보다 크면 -2..

Language/JAVA 2022.01.27

#문자열 포함여부 확인, 치환 + 자주 쓰는 정규식 패턴

문자열 포함여부 확인 s.contains("문자") : true/false, 대소문자 구분 s.indexOf("문자") : 특정 문자의 위치를 반환, 찾지 못하면 -1을 반환한다. s.matches("문자") : true/false, 정규식 사용 가능 문자 대체 함수 s.replace(찾을 문자열-CharSequence target-, 바꿀 문자열-CharSequence replacement-) s.replaceAll(찾을 문자열-String regex-, 바꿀 문자열-String replacement-) 자주쓰는 정규식 패턴 숫자만 : ^[0-9]*$ 영문만 : ^[a-zA-Z]*$ 영문만, 띄어쓰기가능 : /^[a-zA-Z\s]+$/ 한글만 : ^[가-힣]*$ 한글만,띄어쓰기가능 : /^[가-힣\s]..

Language/JAVA 2022.01.27

[프로그래머스] 숫자 문자열과 영단어

https://programmers.co.kr/learn/courses/30/lessons/81301 문자열에 포함된 영단어가 있을 때 이를 숫자로 바꿔주는 문제이다. 처음에는 배열로 변환해서 바꿔야 한다고 생각해서, 이걸 어떻게 배열로 바꾸지 고민했는데 문자열을 대체할 수 있는 replace를 사용해서 해당하는 문자의 값을 바꾸면 된다. class Solution { public int solution(String s) { String[] arr = new String[]{"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; for (int i = 0; i < arr.length; i++) { //포함하고 있을 ..

Language/JAVA 2022.01.27

[프로그래머스] 문자열 내림차순으로 배치하기

https://programmers.co.kr/learn/courses/30/lessons/12917 문자열을 char배열로 전환해서 정렬 후 다시 String으로 만들어주었다. import java.util.Arrays; class Solution { public String solution(String s) { String answer = ""; char[] arr = s.toCharArray(); Arrays.sort(arr); for (int i = arr.length-1; i >= 0; i--) { answer += arr[i]; } return answer; } } 마지막에 for문으로 돌려주었는데, StringBuilder를 사용할 수 있다. public class ReverseStr { p..

Language/JAVA 2022.01.27

[프로그래머스] 문자열 내 마음대로 정렬하기

https://programmers.co.kr/learn/courses/30/lessons/12915 문자열 배열이 주어지고, 해당 문자열의 특정 인덱스(n)를 기준으로 배열을 정렬하는 문제다. 특정 인덱스의 문자만 추출해서 배열을 정렬하고 나서 1. 이걸 이용해 원래의 배열을 정렬하는 부분 2. 인덱스 문자열이 같을 경우 사전순으로 배열하는 부분 이 어려웠다. 1.은 특정 인덱스의 문자를 추출한 배열은 원래 배열의 위치와 동일하기 때문에 이를 활용하기 위해 그대로 두고, 정렬을 위해 clone();으로 복사본을 새로 만들었다. 그래서 정렬된 배열(wordSort)과 원래 배열(word)을 비교하여 정렬 순서대로 해당되는 index를 찾고 이 index에 해당하는 strings값을 answer배열에 하나..

Language/JAVA 2022.01.26

#JVM(Java Virtual Machine)

JVM : 자바 가상 머신 가상머신 : 프로그램을 실행하기 위해 물리적 머신과 유사한 머신을 소프트웨어로 구현한 것 자바로 작성된 모든 프로그램은 자바 가상 머신에서만 실행될 수 있다. 자바 프로그램을 실행하기 위해서는 반드시 자바 가상 머신이 설치되어 있어야 한다. 자바 프로그램과 달리 JVM은 운영체제에 종속적이므로, 각 운영체제에 맞는 자바 가상 머신을 설치해야 한다. 자바 가상 머신이라는 한 단계를 거쳐야 하므로, 상대적으로 실행 속도가 느리다는 단점을 가지고 있다. 구성 자바 인터프리터(interpreter) : 자바 컴파일러에 의해 변환된 자바 바이트 코드를 일고 해석하는 역할. 클래스 로더(class loader) : 동적으로 클래스를 로딩해줌. 자바는 동적으로 클래스를 읽어오므로, 프로그램..

Language/JAVA 2022.01.24

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

https://programmers.co.kr/learn/courses/30/lessons/12921 import java.util.Arrays; class Solution { public int solution(int n) { //n+1개의 배열을 만들기 boolean[] arr = new boolean[n+1]; //초기화 : 모든 값을 true로 입력 Arrays.fill(arr, true); //0과 1은 소수가 아니니 제외 arr[0] = arr[1] = false; //2부터 시작 //아래 for문에서 배수에 해당하는 수는 모두 지울 것이므로 횟수 제한 for (int i = 2; i*i

Language/JAVA 2022.01.21

[프로그래머스] 모의고사

https://programmers.co.kr/learn/courses/30/lessons/42840#qna import java.util.ArrayList; import java.util.Arrays; import java.util.List; class Solution { public int[] solution(int[] answers) { //수포자별로 배열을 만들기 //찍는 방식을 배열로 생성 int[] p1a = new int[]{1, 2, 3, 4, 5}; int[] p2a = new int[]{2, 1, 2, 3, 2, 4, 2, 5}; int[] p3a = new int[]{3, 3, 1, 1, 2, 2, 4, 4, 5, 5}; int[] p1 = new int[answers.length];..

Language/JAVA 2022.01.20