목록Programing/Java (24)
T_era
백준 문제풀이를 하는데 HashSet이란 것을 알게 되어 조사해 봤다Set interface- Heap 영역에 존재한다- 객체를 중복해서 저장할 수 없으며 하나의 null값만 저장한다.- 중복을 자동으로 제거해 준다Set은 비선형 구조이기 때문에 '순서'의 개념과 '인덱스'가 존재하지 않는다. 때문에 값을 추가 / 삭제 하는 경우 Set 내부에 해당 값을 검색하여 해당 기능을 수행 HashSet : Set Interface를 그대로 상속받는 구현 클래스- 중복된 값을 허용하지 않는다- List 등과 다르게 저장된 순서가 보장되지 않는다- null을 값으로 허용해주어야 한다// 타입을 지정 가능HashSet person = new HashSet();// 타입을 생략하여 사용 가능 -> 빈 HashSet생성..
스코프 : 변수가 존재하는 범위스코프 ← 이것을 굳이 신경쓰면서 코딩을 하는 건 비추천차라리 신경쓰기보단 변수를 그때 그때 필요한 영역에 작성하고 바깥에도 필요하면 점점 범위를 넓혀가는 것이 낫다물론 프로그램을 작성하기 전에 설계를 해놓고 위치를 정할 수 있으면 그게 좋긴하형변환//출력 값이 어떻게 될까 int a = 40, b = 60; double c = a/b; System.out.println(c); c = (double) (a/b); System.out.println(c); c = (double) a/b; System.out.println(c); c = a / (double)b; Sy..
(do)While의 장점명확하지 않은 조건일 때 사용하기 좋다for의 장점명확한 조건을 가지고 있을 때 사용하기 좋다예1) while의 사용 용도import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(true){ System.out.println("종료하시겠습니까? Y/N"); if(sc.nextLine().equals("Y")) { break; } } }}이 코드와 같이 사용자가 임의로 조작해야하는..
if-else와 switch-case 중 어느 것을 사용해야 할까??if-else : 조건을 하나하나 비교하면서 알맞는 조건을 찾아 실행한다장점 : switch-case에 비해 메모리를 덜 사용한다단점 : 조건문의 개수만큼 O(n)의 시간 복잡도를 갖게 되어 성능이 상대적으로 낮switch-case : 모든 case중 알맞는 조건으로 바로 이동해 실행한다장점 1)if-else에 비해 속도가 빠르다단점1) : 모든 case를 jump-table에 넣어 놓기 때문에 메모리를 많이 사용한다.2): 조건식이 한정적이다 조건이 많을 수록 switch-case 사용을 추천했지만최근 컴파일러들이 그 정돈 가볍게 넘길 수준이라 편한 것을 사용해도 무방하다삼항연산자의 주요 사용처변수의 초기화메소드의 리턴예제)public..
증감 연산자int a = 10;int b = 10;System.out.println(a++ + ":" + ++b);결과 10:11완벽하게 이해하고 넘어가는 것을 추천 이 부분을 이해하지 못하고 실수해서 발생하는 오류가 많음a++ → (a = a) + 1++a → a = (a + 1)이렇게 생각하는게 이해하기 편하다대입 연산자*** 기존 =에 대한 생각을 하면 안된다** *a = 1; 이라는 코드가 있으면 a에다가 1을 넣는다라고 이해하는 게 옳다. 따지자면 insert의 개념삼항 연산자예제)boolean test(){ int a = 200; int b = 100; String strResult = a > b ? "a가 큼" : "b가 큼"; return ..
자바의 packege클래스를 용도나 기능별로 묶어 그룹화한 것클래스를 유일하게 만들어주는 식별자 역할package1과 package2가 있으면 각자 hello.class를 가지고 있어도 구분하여 사용할 수 있음하지만 이럴경우 직접 호출해 객체를 생성하는 방법도 있지만 대부분의 경우 import를 사용ex) import package1.hello 또는 import package1.* // 여기서 *은 전체를 의미*** 서로 다른 패키지에서 같은 클래스명을 가지고 있고, 전부 import한 경우 호출할 때 package를 전부 작성해야한다***변수지역변수와 전역변수지역변수와 전역변수는 변수를 선언한 위치에 따라 나뉜다public class Var1 { int globalVar = 10; publ..
백준 문제풀이를 하다 Buffer에 대해 보게되었다.BufferedReader와 BufferedWriter에 대해 아라보자BufferedReader- 문자 입력 스트림에서 텍스트를 효율적으로 읽어들이는 데 사용되는 클래스 - 내부적으로 버퍼를 사용하여 데이터를 한 번에 일정량씩 읽어온다- Scanner에 비해 사이즈가 월등히 크고 속도도 유의미하게 빠르일단 사용법을 아라보자import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws IOException { Buffered..
5번의 가위바위보 게임을 해서 승리한 횟수 상당의 상품을 받아가는 게임을 만들어봐요 실행 화면 예시1.5번의 가위바위보를 진행합니다.//1번문제 String str = sc.nextLine(); for(int i = 0; i 2.유저는 매 판마다 “가위”, “바위”, “보” 중 하나를 입력합니다.•잘못된 입력을 받았다면 잘못된 입력입니다! 를 출력해주세요. // 2번문제 public boolean Accuracy(String _str){ boolean flag = false; if(_str.isEmpty()) return flag; for(String s : cpu){ if(s.equals(_str)) flag ..
1.컴퓨터가 랜덤으로 영어단어를 선택합니다.a.영어단어의 자리수를 알려줍니다.ex ) PICTURE = 7자리 => _ _ _ _ _ _ _String word = wordQuiz.wordList[rand.nextInt(wordQuiz.wordList.length)];int wordLength = word.length();String str = wordQuiz.TextLength(wordLength);;System.out.println(str);2.사용자는 A 부터 Z 까지의 알파벳 중에서 하나를 입력합니다.a.입력값이 A-Z 사이의 알파벳이 아니라면 다시 입력을 받습니다b.입력값이 한 글자가 아니라면 다시 입력을 받습니다c.이미 입력했던 알파벳이라면 다시 입력을 받습니다.d.입력값이 정답에 포함된 알파..
1.사용자가 볼 수 있게 메뉴를 표시합니다.•다음과 같은 음료를 실행창에 표시합니다.◦사이다 1,700원◦콜라 1,900원◦식혜 2,500원◦솔의눈 3,000원// 1번문제 제품 표시하기for(String key : vending.mapDrink.keySet()){ System.out.println(key + ":" + vending.mapDrink.get(key));}2.사용자는 음료를 선택할 수 있습니다. •사용자에게 어떤 음료를 살 것인지를 입력받습니다.◦ex) 사이다◦목록에 없는 음료일 경우 실행이 종료됩니다. // 2번문제 제품 선택하기String drink = vending.SelectDrink();if(vending.mapDrink.containsKey(drink)){ System.out...