목록분류 전체보기 (28)
배움과 기록의 장
✅ 문제https://www.acmicpc.net/problem/1316 ✅ 풀이String 타입의 reducedStr를 만들어서, 연속하는 중복 문자를 제외하고 담아준다.앞,뒤문자 비교해서다르면 reducedStr에 넣어주기 ex) aabbbcca -> abca reducedStr에 중복하는 문자가 있으면 그룹단어가 아니고, 없으면 그룹단어이다 첫문자와 나머지문자들로 쪼개서 나머지문자들에 첫문자가 포함되어있는지 확인, 있으면 그룹단어 x 없으면 나머지문자가 하나 남을 때까지 반복 (두개 남을 때까지 해도 된다. 어차피 남은 두개가 다른 건 명확하니까)ex) abca -> a, bca 쪼갬 -> bca에 a 포함되어있음 -> 그룹단어 x substring(int beginIndex) 에 대해"emptin..
✅ 문제https://www.acmicpc.net/problem/2941 ✅ 풀이먼저 목록에 나와있는 c=/c-/dz=/d-/lj/nj/s=/z=를 차례대로 갯수를 count 해주고, 제거해준다. 그 이후에 남은 알파벳들은 하나씩 count 해준다.예를 들어 c=의 경우,c=의 갯수 count :{(기존 str길이) - (c=를 제거한 str길이)} / (c=의 길이) 를 해주면 된다. = (str.length() - str.replace("c=", "").length())/2count 해준 c=를 제거 :str = str.replace("c=", " ") * "" 이 아닌 " "으로 해줘야한다. 그 이유는 예를 들어 "lc=j" 라는 문자열이 있을 때, 크로아티아 알파벳의 갯수는 l, c=, j 3개..
✅ 문제https://www.acmicpc.net/problem/1157 ✅ 풀이입력은 대소문자로 된 단어로 받고, 출력은 대문자로 하기때문에 우선 입력받은 단어를 대문자로 바꿔준다. 이때 사용해준 메서드는 문자열.toUpperCase() 이다.그 다음은 가장 많이 사용된 알파벳을 알기 위해 단어에 사용된 A~Z의 갯수를 알아야한다. 사용된 A~Z의 갯수를 담을, 크기 26 초기값이 0인 int 배열(alphabet)을 선언해준다. 단어를 순회하며 사용된 알파벳에 해당하는 배열의 요소에 +1을 해줄 것이다. 사용된 알파벳에 해당하는 배열의 인덱스를 찾을 때, 아스키코드를 사용해줄 것이다. 우리가 만든 배열(alphabet)은 0~25의 인덱스를 가진다. 표를 보면 A~Z가 65~90에 해당한다는 것을 알..
✅ 문제https://www.acmicpc.net/problem/10988 ✅ 풀이주어진 단어 맨 처음을 head, 맨 끝을 tail로 정하여 문자를 비교한다. 같으면 isPalindrome 초기값 1 그대로 두고, 다음 문자 비교를 위해 head++ tail-- 후 반복문 계속 진행, 다르면 isPalindrome 0 할당 후 반복문을 종료(break)한다.반복문은 break 안걸리면 head ✅ 코드import java.util.Scanner;public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); String str = sc.nextLine(); ..
✅ 문제https://www.acmicpc.net/problem/10812 ✅ 풀이우선 바구니 배열을 만들어 1부터 순서대로 담아줬다. 그리고 주어진 begin, end, mid를 기준으로 바구니 배열을 _begin / begin_mid / mid_end / end_ 이렇게 4개의 배열로 나눠주었다. (그림 참고)begin_mid, mid_end의 순서를 바꾸어 최종적으로 _begin, mid_end, begin_mid, end_ 순의 배열을 출력하면 끝 배열을 쪼개고, 합치는 과정에서 사용한 메서드 (배열 복사)Arrays.copyOfRange(Object[] original, int from, int to): 배열의 범위를 지정해서 복사 Object[] original = 복사하고자 하는 원본..
✅ 문제https://www.acmicpc.net/problem/11718 ✅ 풀이 처음에는 while 문을 아래와 같이 작성했더니, NoSuchElement 라는 런타임에러가 떴다. while(true) { String line = sc.nextLine(); if (line == null) break; else System.out.println(line); }찾아보니 nextLine() 메서드에서 다음 입력값이 없으면 null 값이 들어갈 줄 알았는데, 그게 아니라 에러를 띄우고 끝낸다는 것이었다.따라서 hasNextLine() 메서드를 통해 다음 입력값이 있는지를 확인한 후, true면 입력을 받고 출력을 진행해야한다. ✅ 코드i..
✅ 문제https://www.acmicpc.net/problem/9086 ✅ 풀이처음에 num 인풋을 nextInt()를 이용하여 받은 후, 그 다음 인풋을 nextLine()으로 받았더니 인덱스에러가 떴다. nextInt()가 엔터 전까지만 입력을 받아 nextLine이 엔터를, 즉 공백을 입력 받기 때문에 생기는 문제라고 한다. 그래서 똑같이 nextLine()로 입력받아 Integer.parseInt()를 통해 string을 int로 변환해주었다.string을 int로 바꾸는 방법에는, 'Integer.parseInt(str)'를 사용하거나, 'str.charAt(0) - 48'로 char로 바꾼 후 아스키코드를 이용하는 방법이 있다. 단 후자는 한자리 숫자일 때만 가능하다.char + char을 ..
배열과 배열의 요소를 이리저리 할당/재할당 할 때, 주소값이 저장되는지 값이 저장되는지 헷갈릴 때가 많아서 혼자 이것저것 쳐봤다 배열의 요소와 값1. 코드 int[] a = new int[]{1,2,3,4,5}; System.out.println(a); System.out.println(a.length); for(int i = 0; i 2. 출력 3. 결론 b[2] = a[2] 를 하면 값만 저장되는 것이기 때문에, b[2] 값을 바꿔도 a[2]는 바뀌지 않는다. b와 a가 서로 전혀다른 배열을 참조하고 있기 때문에 b의 변화가 a에 아무런 영향도 미치지 않는다. 배열과 주소값1. 코드 b= a; // a라는 객체의 주소값이 저장됨 ..