목록백준 (5)
봄디의 개발일지
📝 문제백준 3273번 : 두 수의 합 💭 풀이 방법for 문을 2번 돌려서 푸는 문제구나 ! 라고 하고 풀었지만 시간 초과가 발생했습니다 ..찾아보니 이 문제는 투 포인터 를 이용해서 푸는 문제더라구요 ! 투 포인터란 ? 선형 시간 O(n) 으로 알고리즘을 풀 수 있게 해주는 알고리즘입니다. 배열이나 리스트에서 두 개의 포인터를 이용해서 특정 조건을 만족하는 부분 구간을 효율적으로 탐색할 수 있습니다. 일반적으로 배열이나 리스트가 정렬되어 있을 때 사용됩니다. 간략한 알고리즘은 이렇습니다. 1. 배열을 먼저 정렬해준다. 2. start 는 배열의 맨 앞을, end 는 배열의 맨 뒤를 가리킨다. 3. arr[start] + arr[end] 를 해서 원하는 값이 나오면 최종 count 할 수 있는 ..
📝 문제백준 101988번 : 팰린드롬인지 확인하기💭 풀이 방법맨 앞과 맨 뒤, 이런식으로 확인을 해야하므로, 맨 앞을 가리킬 수 있는 변수와 맨 뒤를 가리킬 수 있는 변수가 필요문자열의 길이를 이용해서 맨 뒤를 가리킬 수 있는 변수 선언짝을 지어 확인하므로 반복문은 문자열 길이의 절반만큼 돌아야한다.예를 들어, "level" 이 있을 때 단어의 길이가 홀수(=5) 이므로, (l과 l), (e와 e) 두 번만 확인해주면 된다. "noon" 은 단어의 길이가 짝수(=4) 이므로 (n와 n), (o와 o) 두 번을 확인해줘야한다. 즉, 단어의 길이가 홀수일 때도, 5/2 = 2번만 확인해주면 되고, 짝수일 때도 4/2 = 2 번만 확인해주면 되므로 반복문은 문자열 전체 길이의 / 2 만큼 돌리면 된다반..
📝 문제백준 11365번 : !밀비 급일💭 풀이 방법문자열을 거꾸로 뒤집어야하므로 StringBuffer 클래스 이용하기반복문을 돌려 입력을 받고 입력한 문자열이 "END" 와 동일하다면 종료하기😊 작성한 코드package String;import java.util.Scanner;public class 밀비_급일 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while(true) { String word = scanner.nextLine(); if(word.equals("END")) break; ..
📝 문제백준 11720번 : 숫자의 합💭 풀이 방법둘째 줄에 숫자를 공백 없이 입력받으므로 String 변수로 입력받기첫째 줄에 입력받은 숫자의 개수만큼 for문을 돌면서 charAt()으로 char 단위로 나누기아스키코드 이용하기숫자 0번의 아스키코드 : 48번이므로, -48을 해야 실제 숫자가 된다.그 숫자를 반복문을 돌며 총 수의 합을 구한다.⛔ 발생한 오류위와 같은 오류는 scanner.nextInt()를 호출하고, scanner.nextLine()을 바로 호출했을 때 발생하는 문제이다.scanner.nextInt()로 5를 입력하고 엔터를 치면, \n가 nextLine() 에서 읽히게 된다.따라서 문자열은 입력을 받지 못하게 되고, for문에는 count만큼 charAt()을 실행할 수 없기..
📝 문제백준 10808번 : 알파벳 개수💭 풀이 방법출력 결과값을 보아 a부터 z까지의 개수를 모두 출력해야하므로 26개를 갖는 정수형 배열을 선언아스키코드 값 이용하기a는 97번이므로 입력한 값에 97을 빼면 소문자 알파벳의 배열의 인덱스와 동일해진다! 예를 들어, apple을 입력했다고 가정했을 때, a는 아스키코드의 값이 97이므로 -97을 하면 0이 된다.즉, array[0]에는 a의 개수가 들어가는 자리이므로, 인덱스와 값이 동일해지는 것이다.마찬가지로, p의 아스키코드의 값은 112이고, 97을 빼면, 15이다. 즉, array[15]에 p의 개수를 넣을 수 있는 것이다.charAt() 사용하기charAt() 이란 String 으로 저장된 문자열 중에 한 글자만 char 타입으로 변환해줍니..