반응형

1. 문제 번호 3052번


 

 

 

2. 문제 풀이 

 - HashSet 

 

 

나의 문제풀이 방식 및 순서

 - KeyPoint는 중복을 제거하는거라고 생각함 

 

 


3. 소스 인증

 

import java.util.*;
import java.lang.*;
import java.io.*;

// The main method must be in a class named "Main".
class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String inputLine = null;
        List<Integer> inputList = new ArrayList<>();

        while( (inputLine=br.readLine()) != null && !inputLine.isEmpty() ){
            int parseIntInputLine = Integer.parseInt(inputLine);
            inputList.add(parseIntInputLine%42);
        }

        Set<Integer> submitSet = new HashSet<>(inputList);

        System.out.println(submitSet.size());

        
    }
}

 

 

 

 

 

- 실패 소스코드 -

4. 추가 개념

 

 

HashSet 

HashSet의 성질

1.  HashSet 중복 허용 X

값 존재 유무 파악할 때 사용 가능

 

2. List 등과는 다르게 순서 보장 X

저장 순서를 유지하고자 한다면 LinkedHashSet 사용

 

3. Null값을 허용

 

HashSet의  구현

// 타입을 지정 가능
HashSet<String> alphabet1 = new HashSet<String>();

// 타입을 생략하여 사용 가능 -> 빈 HashSet생성 시 사용
HashSet<String> alphabet2 = new HashSet<>();  

// 초기 용량(Capacity) 설정
HashSet<String> alphabet3 = new HashSet<>(10); 

 // animal의 모든 값을 가진 HashSet 생성 
HashSet<String> alphabet4 = new HashSet<>(alphabet1);

//초기값 지정 가능
HashSet<String> alphabet5 = new HashSet<>(Arrays.asList("A", "B", "C"));

 

HashSet의  값 추가  및 삭제,  사이즈 확인

//순서가 없으므로 특정 위치에 값 추가 불가
HashSet<String> alphabet = new HashSet<>()
                alphabet.add("A");
                alphabet.add("B");
                alphabet.add("C");
    

//값 B 제거
set.remove(2);
//모든 값을 제거
set.clear();


/********사이즈 확인********/
System.out.println(alphabet.size());

 

  • HashSet 내부에 존재하지 않는다면 그 값을 HashSet에 추가/삭제 하고 true 를 반환한다.
  • HashSet 내부에 존재한다면 false를 반환한다.

 

 

HashSet의  요소 값 검색 및 출력

HashSet<String> alphabet = new HashSet<String>(Arrays.asList("A","B","C"));

////set내부에 값 1이 있다면 true 출력, 없다면 false 출력
System.out.println(alphabet.contains("B"));




//출력결과 :  [A,B,C]
System.out.println(alphabet); 
		

Iterator iter = set.iterator();	

//hasNext() : 가져올 객체가 있다면 true 리턴, 없다면 false 리턴
// next() : Iterator에서 하나의 객체를 가져올 수 있는 메소드
while(iter.hasNext()) {
    System.out.println(iter.next());
}

 

 


5. 참조 블로그


 

불편함을 느끼실 경우 연락 주시면 곧 바로 삭제하도록 하겠습니다.

 


 

https://velog.io/@acacia__u/hashSet

 

[Java] HashSet의 개념과 사용법 정리

Set 이란? Set 인터페이스 구현 클래스 객체를 중복해서 저장할 수 없으며, 하나의 null 값만 저장할 수 있다. 중복을 자동으로 제거해준다. Set은 비선형 구조이기 때문에 '순서'의 개념과 '인덱스'

velog.io

 

728x90
반응형
반응형

1. 문제 번호 5597번


 

 

 

2. 문제 풀이 

 - HashSet 

 - 1~30 Index자리에 1,true처리 

 - 내가 선호하는 방법이며 처음 시도한 방법(*** 결국 해냄*** 처음과 끝을 한정 지을 것***)

 

 

나의 문제풀이 방식 및 순서

 - 이중 for문을 사용해서 비교하려고 생각했었는데 불가능에 가깝다는걸 2시간정도 만에 깨달음..ㅠㅠㅜ

   약간 생각하는게 귀찮아서 손으로 먼저 움직이려고 하는 경향이 많다.

 

 


3. 소스 인증

 

import java.util.*;
import java.lang.*;
import java.io.*;

// The main method must be in a class named "Main".
class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st;
        List<Integer> submitMember    = new ArrayList<>();
        List<Integer> notSubmitMember = new ArrayList<>();
        String inputLine = null;
        
        while ( (inputLine=br.readLine()) != null && !inputLine.isEmpty()){
            submitMember.add(Integer.parseInt(inputLine));    
        }

        Set<Integer> submitSet = new HashSet<>(submitMember);

        for (int j = 1; j <= 30; j++){
            if(!submitSet.contains(j)){
                System.out.println(j);
            }
        }
        
    }
}

 

 

import java.util.*;
import java.lang.*;
import java.io.*;

// The main method must be in a class named "Main".
class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        boolean [] isSubmitMember = new boolean[31];

        for (int i = 1; i <= 28; i ++){
            int inputLine = Integer.parseInt(br.readLine());
            isSubmitMember[inputLine] = true;
        }

        for (int j = 1; j <= 30; j++){
            if(!isSubmitMember[j]){
                System.out.println(j);
            }
            
        }
        

    }
}

 

 

import java.util.*;
import java.lang.*;
import java.io.*;

// The main method must be in a class named "Main".
class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st;
        List<Integer> submitMember = new ArrayList<>();
        List<Integer> notSubmitMember = new ArrayList<>();
        String inputLine = null;
        
        while ( (inputLine=br.readLine()) != null && !inputLine.isEmpty()){
            submitMember.add(Integer.parseInt(inputLine));    
        }
        
        //시작과 끝을 한정해주기!!! 매우 중요!!!
        submitMember.add(31);  
		
        //Sorting 
        Collections.sort(submitMember);
        
        /*
        i = 1,4,7
        j = 1 일때
        while ( 1 < 1 ) 는 false 
        while ( 2 < 4 ) 는 true로 notSubmitMember 에 2가 저장. j ++ 이니깐 j = 3으로 증가되어 while 안에서
        while ( 3 < 4 ) 는 true로 notSubmitMember 에 3가 저장.
        while ( 4 < 4 ) 는 false 라서 for문 으로 나와서 i는 7로 다음 index저장 
        while ( 5 < 7 ) 는 false 
        */
        
        int j = 1;
        for (int i : submitMember){
            while(j < i){
                notSubmitMember.add(j++);
            }
            j++;
        }

        for (int memberId : notSubmitMember) {
            System.out.println(memberId);
        }
        
    }
}

 

 

- 실패 소스코드 -
/********************************************************************

...실패한 소스코드...

*********************************************************************/

import java.util.*;
import java.lang.*;
import java.io.*;

// The main method must be in a class named "Main".
class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st;
        List<Integer> submitMember    = new ArrayList<>();
        List<Integer> notSubmitMember = new ArrayList<>();
        String inputLine = null;
        
        while ( (inputLine=br.readLine()) != null && !inputLine.isEmpty()){
            submitMember.add(Integer.parseInt(inputLine));    
        }

        Collections.sort(submitMember);

        for (int j = 1; j <= 30; j++){
            for(int i = 0; i < j; i++){
                if(j == submitMember.get(i)){
                    break;
                }
            }
            notSubmitMember.add(i)
        }

        for (int i = 0; i <= ; i++){
            for (int j = 1; j <= 30; j++){
                if(submitMember.get(i) == j){
                    continue;
                }
                notSubmitMember.add(i)
            }
        }
        

        for (int memberId : notSubmitMember) {
            System.out.println(memberId);
        }
        
    }
}

4. 추가 개념

 

 

HashSet 

HashSet의 성질

1.  HashSet 중복 허용 X

값 존재 유무 파악할 때 사용 가능

 

2. List 등과는 다르게 순서 보장 X

저장 순서를 유지하고자 한다면 LinkedHashSet 사용

 

3. Null값을 허용

 

HashSet의  구현

// 타입을 지정 가능
HashSet<String> alphabet1 = new HashSet<String>();

// 타입을 생략하여 사용 가능 -> 빈 HashSet생성 시 사용
HashSet<String> alphabet2 = new HashSet<>();  

// 초기 용량(Capacity) 설정
HashSet<String> alphabet3 = new HashSet<>(10); 

 // animal의 모든 값을 가진 HashSet 생성 
HashSet<String> alphabet4 = new HashSet<>(alphabet1);

//초기값 지정 가능
HashSet<String> alphabet5 = new HashSet<>(Arrays.asList("A", "B", "C"));

 

HashSet의  값 추가  및 삭제,  사이즈 확인

//순서가 없으므로 특정 위치에 값 추가 불가
HashSet<String> alphabet = new HashSet<>()
                alphabet.add("A");
                alphabet.add("B");
                alphabet.add("C");
    

//값 B 제거
set.remove(2);
//모든 값을 제거
set.clear();


/********사이즈 확인********/
System.out.println(alphabet.size());

 

  • HashSet 내부에 존재하지 않는다면 그 값을 HashSet에 추가/삭제 하고 true 를 반환한다.
  • HashSet 내부에 존재한다면 false를 반환한다.

 

 

HashSet의  요소 값 검색 및 출력

HashSet<String> alphabet = new HashSet<String>(Arrays.asList("A","B","C"));

////set내부에 값 1이 있다면 true 출력, 없다면 false 출력
System.out.println(alphabet.contains("B"));




//출력결과 :  [A,B,C]
System.out.println(alphabet); 
		

Iterator iter = set.iterator();	

//hasNext() : 가져올 객체가 있다면 true 리턴, 없다면 false 리턴
// next() : Iterator에서 하나의 객체를 가져올 수 있는 메소드
while(iter.hasNext()) {
    System.out.println(iter.next());
}

 

 


5. 참조 블로그


 

불편함을 느끼실 경우 연락 주시면 곧 바로 삭제하도록 하겠습니다.

 


 

https://velog.io/@acacia__u/hashSet

 

[Java] HashSet의 개념과 사용법 정리

Set 이란? Set 인터페이스 구현 클래스 객체를 중복해서 저장할 수 없으며, 하나의 null 값만 저장할 수 있다. 중복을 자동으로 제거해준다. Set은 비선형 구조이기 때문에 '순서'의 개념과 '인덱스'

velog.io

 

728x90
반응형
반응형

 

前周末去参加马拉松21公里。 

这年辞职公司以后,逐渐完成了我的愿望清单。 

马拉松是可敢说,踏踏实实埋头苦干。 

先练一练跑5公里,能跑到,把距离加以一二公里。 

不重视跑得速度快不快,只重视你扔不扔住,耐心跑到你想要的目标距离。

 


上周末参加21公里的马拉松比赛。

辞职后,逐渐实现了我的愿望清单。

马拉松可以说是脚踏实地,埋头苦干的体现。

先练练跑5公里,如果能跑得动的话,可以再增加一两公里的距离。

不要太在意跑得有多快,重要的是坚持下去,直到达到你想要的目标距离。

 

你们怎么看待?有意见留下留言!

 


 

 

 


 

 

728x90
반응형

'Language(语言) > 中文(HSK6级)' 카테고리의 다른 글

24年06月2日 天天日记  (0) 2024.06.02
24年05月21日 天天日记  (0) 2024.05.21
24年05月20日 天天日记  (0) 2024.05.21
24年05月15日 天天日记  (0) 2024.05.15
24年05月10日 天天日记  (0) 2024.05.10
반응형

1. 문제 번호 10810번


 

 

 

2. 문제 풀이 

 - 

 

 

나의 문제풀이 방식 및 순서

 - 도대체 몇시간을 푸는지 모르겠다. 복붙하기는 싫고 내가 직접하고 싶은데 어디가 문제인지 파악도 잘 안되고 배는 엄청 고프고 집중도 안되고 그렇다.

 - 배열에서 index를 파악하여 -1 하는 부분을 놓친 부분 + 1

 - 여전히 코드에 문제있어서 못 푼 부분 +1 

 


3. 소스 인증

 

 

import java.util.*;
import java.lang.*;
import java.io.*;

class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        
        int N  = Integer.parseInt(st.nextToken()); //바구니 개수
        int M  = Integer.parseInt(st.nextToken()); //최대값
        int [] arrBasket = new int[N]; 
        int [] arr = new int[3]; //i,j,k 
        
        for(int i = 0; i < M; i++){
            st = new StringTokenizer(br.readLine()); // 새로운 입력값을 받아오기 위해 StringTokenizer 초기화

            //i,j,k 데이터 삽입
            for(int j = 0; j < 3; j++){ 
                arr[j] = Integer.parseInt(st.nextToken());
            }
            
            for(int k = arr[0]-1; k < arr[1]-1; k++){
                arrBasket[k] = arr[2];
            }
        }

        for(int i = 0; i<arrBasket.length; i++){
            System.out.print(arrBasket[i] + " ");
        }

    }
}

 

 

 

 

 


4. 추가 개념

 

 

 

 

 

 

728x90
반응형
반응형

 

어떤식으로 블로그를 정리하고 많은 사람들에게 도움을 줄 수 있을지는 모르겠다.

 

일단 작성해서 피드백을 받든, 좀 더 효율적인 방법을 찾든 해야겠다.

 

하루 하루 10개라도 하다보면 100일이면 1000개다.

 

요즘 느끼는 거지만 누적의 힘은 대단하다.

 


 

 


 

 

728x90
반응형

'Language(语言) > 中文(HSK6级)' 카테고리의 다른 글

24年06月2日 天天日记  (0) 2024.06.02
24年05月21日 天天日记  (0) 2024.05.21
24年05月20日 天天日记  (0) 2024.05.21
24年05月15日 天天日记  (0) 2024.05.15
24年05月14日 天天日记  (0) 2024.05.14
반응형

1. 문제 번호 2562번


 

 

 

2. 문제 풀이 

 - 재귀함수

 - Sorting

 

 

나의 문제풀이 방식 및 순서

 - 처음부터 Sorting만 하면 쉽게 구할텐데 또 재귀함수를 쓰고자 시도함.. 

 

 


3. 소스 인증

 

 

import java.util.*;
import java.lang.*;
import java.io.*;

class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new  InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        List<Integer> numList = new ArrayList<>();

        String inputData = null;
        while( (inputData=br.readLine())!=null ){
            numList.add(Integer.parseInt(inputData));
        }

        int maxValue = maxArray(numList);
        int maxIndex = -1;
        for (int i = 0; i<numList.size(); i++){
            if(numList.get(i) == maxValue){
                maxIndex = numList.indexOf(numList.get(i)) + 1;
                break;
            }
        }
        System.out.println(maxValue);
        System.out.println(maxIndex);
        br.close();
    }

    public static int maxArray(List<Integer> numList){
        if (numList.size() == 1 ){
            return numList.get(0);
        } else {
            return Math.max(numList.get(0), maxArray(numList.subList(1, numList.size()))); 
        }
    }
}

 

 

 

 

 


4. 추가 개념

 

indexOf

String, List계열에서만 사용 가능하며 Index추출이 가능 (단.. Index는 0부터 시작하여 +1 해줘야 할 수도 있음)
Arrays.asList
List 타입으로 변환 

 

import java.util.Arrays;

public class Test {
    public static void main(String[] args) {
        
    String[] str = {"one","two","three"};
        Arrays.asList(str).indexOf("two"); // 1반환
        
    }
}

 

 

SubList 사용법
특징 1 : 동일한 리스트를 복사하여 만든다.
특징 2 : Main List와 SubList는 연동되어 있어 SubList에 추가하여도 MainList에서도 확인 가능
특징 3 : Main List변경 시 Sub List 사용 불가 
List<Integer> numList = new ArrayList<>();
for(int i = 0; i < 5; i++){
    numList.add(i); //0~4까지 추가
}
List<Integer> sub = numList.subList(3,5); //4,5출력

sub.add(6); //끝에 6추가
sub.remove(0);//0번쨰 요소 삭제

numList.add(7); //원본리스트를 변경하면 subList는 사용불가

 

 

 

 

 

 

 

728x90
반응형
반응형

1. 문제 번호 10818번


 

 

 

2. 문제 풀이 

 - Arrays.sort가 중심 키워드

 - 시간복잡도 개념 정리

 

 

나의 문제풀이 방식 및 순서

 -  

 

 


3. 소스 인증

 

 

import java.util.*;
import java.lang.*;
import java.io.*;

class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new  InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        
        StringTokenizer st = new StringTokenizer(br.readLine());
        int size = Integer.parseInt(st.nextToken());
        
        st = new StringTokenizer(br.readLine()," "); //st = new StringTokenizer(br.readLine()); 와 동일하다. 
        int [] numList = new int[size];

        for(int i = 0; i < size; i++){
            numList[i] = Integer.parseInt(st.nextToken());
        }
        Arrays.sort(numList);
        
        
        System.out.print(numList[0] + " " + numList[size-1] );
        br.close();
    }   
        
}

 

 

import java.util.*;
import java.lang.*;
import java.io.*;

class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new  InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        
        StringTokenizer st = new StringTokenizer(br.readLine());
        int size = Integer.parseInt(st.nextToken());
        
        st = new StringTokenizer(br.readLine()," "); //st = new StringTokenizer(br.readLine()); 와 동일하다. 
        int [] numList = new int[size];
        
        int index = 0;
        while((st.hasMoreTokens())){
            numList[i] = Integer.parseInt(st.nextToken());
            index++;
        }
        
        Arrays.sort(numList);
        
        
        System.out.print(numList[0] + " " + numList[size-1] );
        br.close();
    }   
        
}

 

 

 


4. 추가 개념

 

시간복잡도

 

 

728x90
반응형
반응형

1. 문제 번호 10871번


 

 

 

2. 문제 풀이 

 - StringTokenizer이 반복적으로 사용이 가능하구만..? 

 - StringBuilder 

 

 

 

나의 문제풀이 방식 및 순서

 -  怎么越做题,越简单呢?

 

 


3. 소스 인증

 

 

import java.util.*;
import java.lang.*;
import java.io.*;

class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new  InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        StringTokenizer st = new StringTokenizer(br.readLine());

        int size    = Integer.parseInt(st.nextToken());
        int minimum = Integer.parseInt(st.nextToken());

        int [] numList = new int[size];
        st = new StringTokenizer(br.readLine());
        for(int i = 0; i<numList.length; i++){
            numList[i] = Integer.parseInt(st.nextToken());
        }

        for(int i = 0; i<numList.length; i++){
            if(numList[i]<minimum){
                bw.write(numList[i] + " ");
            }
        }

        bw.flush();
        bw.close();
        br.close();
    }   
        
}

 

 

 

import java.util.*;
import java.lang.*;
import java.io.*;

class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new  InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        StringTokenizer st = new StringTokenizer(br.readLine());
        StringBuilder sb = new StringBuilder();

        int size    = Integer.parseInt(st.nextToken());
        int minimum = Integer.parseInt(st.nextToken());
        
        st = new StringTokenizer(br.readLine()," "); //st = new StringTokenizer(br.readLine()); 와 동일하다. 

        for(int i = 0; i < size; i++){
            int el = Integer.parseInt(st.nextToken());
            if(el < minimum){
                sb.append(el).append(" ");
            }
        }
        bw.write(sb.toString()); // StringBuilder를 문자열로 변환하여 출력
        bw.newLine(); // 개행 문자 추가
        bw.flush();
        bw.close();
        br.close();
    }   
        
}

 

 

 


4. 추가 개념

 

StringBuilder
(=StringBuffer 멀티스레드환경) 

자바에서 String 객체는 변경 불가능하다. 
하나의 문자열을 다른 문자열과 연결하면 새 문자열이 생성되고, 이전 문자열은 가비지 컬렉터로 들어간다.
자바에서 제공하는 싱글스레드 환경에서의 가변적문자열 처리

 

 

 

728x90
반응형

+ Recent posts