본문 바로가기

Java95

[프로그래머스/알고리즘] 서울에서 김서방 찾기 (자바/Java) 문제 설명 String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다. 제한 사항 seoul은 길이 1 이상, 1000 이하인 배열입니다. seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다. "Kim"은 반드시 seoul 안에 포함되어 있습니다. Step1. 문제분석 문자열에서 Kim을 찾아 그 위치값만 넣고 리턴하면 된다. Step2. 문제풀이 코드 우선 내가 생각한대로 코드를 작성하려 했는데 문자열에서 위치를 찾는 법 indexOf에 대해 공부해 보았다. 그런데 무작정 indexOf를 사용하니 당연히 .. 2022. 11. 21.
[Java] 정규표현식(Regular Expression) 정규표현식(Regular Expression) 정규표현식 혹은 정규식은 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용되는 언어 텍스트 편집기나 스크립트 언어에서 문자열의 검색과 치환을 위해 지원 java.util.regex 패키지에 있는 클래스들을 사용 주로 Pattern 클래스와 Matcher 클래스가 사용 Pattern 클래스 java.util.regex.Pattern 클래스는 matches() 메소드를 지원 이 메소드를 이용하여 특정 문자열에 주어진 정규식에 매칭되는지 테스트를 할 수 있다. String pattern = "^[0-9]*$"; // 숫자만 등장하는지 String str = "123321"; boolean result = Pattern.matches(pattern, str); S.. 2022. 11. 20.
[Java] 람다식 (Lambda Expressions) 람다식 식별자 없이 실행가능한 함수 함수인데, 함수를 따로 만들지 않고 코드 한줄에 함수를 써서 그것을 호출하는 방식 문법이 간결한만큼 익숙해지면 가독성 면에서 장점이 크다.(람다식을 사용하지 말라는 사람도 많다.) 람다식 사용법 (매개변수, ...) -> { 실행문 ... } (매개변수, ...)는 오른쪽 중괄호 { } 블록을 실행하기 위해 필요한 값을 제공하는 역할을 합니다. 매개 변수의 이름은 개발자가 자유롭게 지정할 수 있으며 인자타입도 명시하지 않아도 된다. 기호는 매개 변수를 이용해서 중괄호 { } 바디를 실행한다는 뜻으로 해석하면 됩니다. 람다식 장점 코드를 간결하게 만들 수 있다. 코드가 간결하고 식에 개발자의 의도가 명확히 드러나므로 가독성이 향상됩니다. 함수를 만드는 과정없이 한번에 처.. 2022. 11. 20.
[Java]문자열 함수 substr(), substring(), slice() substr(a,b) : a 는 시작값, B는 길이 a번째 부터 b 길이만 잘라내서 표시 Substring(a, b) : a는 시작값, b는 종료값 a 번째부터 b번째 전까지 잘라내서 표시 ※substr() 에서는 b 번째가 아닌 b 길이 만큼까지 잘라내므로 차이가 있다. slice(a, b) : a는 시작값, b는 종료값 a번째 부터 b번째 전까지 잘라내서 표시 substring 사용법 String substring(int startIndex); String substring(int startIndex, int endIndex); startIndex는 시작지점의 인덱스 값이고, endIndex는 종료 지점의 인덱스 값이다. 두 방식 모두 return 값으로 문자열(String)이 리턴된다. 사용 예제 .. 2022. 11. 20.
[Java] 삼항 연산자 삼항연산자란 ? 조건(삼항)연산자는 세 개의 피연산자를 필요로 하는 연산자 if문을 사용하여 코딩을 할 경우 코드 라인이 의미 없이 길어지는 경우들이 종종 생깁니다. //if else int a; if(5 2022. 11. 20.
[Java]StringBuilder 란 ? StringBuilder 란 ? StringBuilder는 String과 문자열을 더할 때 새로운 객체를 생성하는 것이 아니라 기존의 데이터에 더하는 방식을 사용 그렇기에 속도도 빠르며 상대적으로 부하가 적다. 따라서 긴 문자열을 더하는 상황이 발생할 경우 StringBuilder를 적극적으로 사용하면 된다. [ String 클래스와 동일 메소드 ] charAt() - 특정 인덱스 위치의 문자 반환 indexOf() / lastIndexOf() - 문자열 검색해서 위치 반환 length() - 문자열 길이 반환 replace() - 검색된 문자열 교체 substring() - 특정 인덱스 범위 내 문자열을 복사해서 새로 생성된 인스턴스 반환 toString() - 문자열 출력 public class Ma.. 2022. 11. 20.
[Java] Stream이란 ? 스트림(Stream) 기존 루프문 처리의 문제점 기존 Java에서 컬렉션 데이터를 처리할때는 for, foreach 루프문을 사용하면서 컬렉션 내의 요소들을 하나씩 다루었다. 간단한 처리나 컬렉션의 크기가 작으면 큰 문제가 아니지만 복잡한 처리가 필요하거나 컬렉션의 크기가 커지면 루프문의 사용은 성능저하를 일으키게 되었다. 스트림의 등장 스트림은 Java8에서 추가된 기능으로 컬렉션 데이터를 선언형으로 쉽게 처리할수 있다. 복잡한 루프문을 사용하지 않아도 되며 루프문을 중첩해서 사용해야 되는 최악의 경우도 더이상 없어졌다. 또한 스트림은 병렬처리(Multi thread)를 별도의 멀티스레드 구현없이도 쉽게 구현 스트림의 정의 데이터 처리연산을 지원하도록 소스에서 추출된 연속된 요소로 정의할 수있다. //.. 2022. 11. 20.
[프로그래머스/알고리즘] 문자열 다루기 기본 (자바/Java) 문제 설명 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. 제한 사항 s는 길이 1 이상, 길이 8 이하인 문자열입니다. s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다. Step1. 문제분석 우선 문자열 s의 길이가 4혹은 6이기에 if ( s.length() == 4 || s.length() == 6 ) 로 길이를 정하고, 반복문과 문자열 s에 charAt를 통해 숫자가 아닌 값을 받으면 false로 리턴 Step2. 문제풀이 코드 class Solution { public boolean solution(String s) .. 2022. 11. 19.
[프로그래머스/알고리즘] 문자열 내 p와 y의 개수 (자바/Java) 문제 설명 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다. 제한사항 문자열 s의 길이 : 50 이하의 자연수 문자열 s는 알파벳으로만 이루어져 있습니다. 입출력 예 #1 'p'의 개수 2개, 'y'의 개수 2개로 같으므로 true를 return 합니다. 입출력 예 #2 'p'의 개수 1개, 'y'의 개수 2개로 다르므로 false를 re.. 2022. 11. 19.