본문 바로가기
TIL

[231013] String.format(), 컬렉션 set 조회 방법

by 진진리 2023. 10. 13.
728x90

코딩 문제 풀기

  • C의 sprintf()와 비슷한 Java함수 String.format()

String String.format("%지정형식", 대입할 문자열);

참고: https://velog.io/@yu-jin-song/JAVA-%EB%AC%B8%EC%9E%90%EC%97%B4-%ED%98%95%EC%8B%9D-%EC%A7%80%EC%A0%95

 

[JAVA] String.format() - 문자열 형식 지정

문자열 형식 지정하는 메소드

velog.io

import java.time.LocalDateTime;

public class Main {
	public static void main(String[] args) {
    
	String str = "StringFormatExample";
        boolean bool = true;
        int n = 1234;
        LocalDateTime now = LocalDateTime.now();
        
        String result = String.format("문자열 서식: %s, %S", str, str);
        System.out.println(result);
        
        result = String.format("boolean 서식 문자열: %B, %b", bool, bool);
        System.out.println(result);
        
        result = String.format("정수 서식: %d, %o, %x, %05d", n, n, n, n); 
        System.out.println(result);  // %05d → 5자리수, 공백을 0으로 채움
        
        result = String.format("부동 소수점 서식: %4$e, %3$f, %2$g, %1$a", 1234.01, 1234.02, 1234.03, 1234.04);
        System.out.println(result);  // %숫자$ 로 절대 인수 인덱스 지정
        
        result = String.format("날짜/시간 서식: %tY년 %<tm월 %<td일 %<tH시 %<tM분 %<tS초", now);
        System.out.println(result);  // $< 로 상대 인덱스 지정하여 직전의 인수와 같은 인덱스를 이용
        
	}
}

 

t, T: 날짜, 시간 서식 문자 앞에 지정

  • 아규먼트 인덱스(argument index)
    • 인수의 위치를 나타내는 10진수 정수
    • 아라비아 숫자 + $
    • < 플래그를 이용하면 이전 형식 지정자에 대한 인수 재사용 가능

[프로그래머스] 문제를 풀다가 2진수를 원하는 길이만큼의 문자열로 변환하기 좋은 함수에 대해 알게 되었다.

 

앞으로는 아래와 같이 코딩 문제를 풀 때 유지보수성 및 시간 복잡도도 주의깊게 살펴보려고 노력하고자 한다.

유지보수성을 위해 함수를 분리하는 연습 중!!

https://jinjinjincode.tistory.com/115

 

[프로그래머스] 소수 만들기

첫 코드 class Solution { public int solution(int[] nums) { int answer = 0; int len = nums.length; int flag = 1; for(int i=0; i

jinjinjincode.tistory.com

 


2주차 숙제

Set은 .get()으로 조회가 불가능했다

대신 Iterator를 사용하면 된다.

Iterator iter = stringSet.iterator();	// Iterator 사용. 순서대로 하나씩 가져옴
for(int i = 0; i < stringSet.size(); i++) { 
      System.out.println(i+1 + ". " + iter.next());
}

// for문 대신 while(stringSet.hasNext())을 사용할 수 있음
// .hasNext()로 다음으로 가져올 객체가 있는지 확인  --  true, false 리턴

 

숙제 제출:

package week02;

import java.util.*;

public class HW {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String data_st = sc.nextLine();
        String sentence;

        if(data_st.equals("List")){
            ArrayList<String> stringList = new ArrayList<>();
            while(true){
                sentence = sc.nextLine();
                if(sentence.equals("끝")) break;
                else{
                    stringList.add(sentence);
                }
            }
            System.out.println("[ List " + stringList.get(0) +" ]");
            for(int i = 1; i < stringList.size(); i++){
                System.out.println(i + ". " + stringList.get(i));
            }
        }
        else if(data_st.equals("Set")){
            String title = sc.nextLine();
            Set<String> stringSet= new HashSet<>();
            while(true){
                sentence = sc.nextLine();
                if(sentence.equals("끝")) break;
                else{
                    stringSet.add(sentence);
                }
            }
            System.out.println("[ Set " + title +" ]");
            Iterator iter = stringSet.iterator();	// Iterator 사용
            for(int i = 0; i < stringSet.size(); i++) {
                System.out.println(i+1 + ". " + iter.next());
            }
        }
        else{
            Map<Integer, String> stringMap = new HashMap<>();
            int key = 0;
            while(true){
                sentence = sc.nextLine();
                if(sentence.equals("끝")) break;
                else{
                    stringMap.put(key, sentence);
                    key++;
                }
            }
            System.out.println("[ Map " + stringMap.get(0) +" ]");
            for(int i = 1; i < stringMap.size(); i++){
                System.out.println(i + ". " + stringMap.get(i));
            }
        }
    }
}