hoon's bLog

백준 27866 2743 Java Javascript 문자와 문자열 단어 길이 재기 본문

코딩테스트/백준

백준 27866 2743 Java Javascript 문자와 문자열 단어 길이 재기

개발한기발자 2024. 4. 9. 08:02
반응형

 

문제출처 : https://www.acmicpc.net/problem/27866


[27866] 문자와 문자열

<문제>

<Java 풀이>

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        char[] chr = st.nextToken().toCharArray();

        st = new StringTokenizer(br.readLine(), " ");
        int i = Integer.parseInt(st.nextToken());

        System.out.println(chr[i]);
    }
}

사실상 첫 문제는 "문자열 문제는 이런 식으로 푸는 거야!"

라는 뉘앙스라 크게 어렵지 않다.

그래도 혹 모르니 다른 사람들은 어떻게 풀었는지,

참고해 보자.

<다른 사람의 풀이>

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String S = br.readLine();
        int i = Integer.parseInt(br.readLine());
		
        System.out.println(S.charAt(i-1));
		
    }
}

내가 작성한 코드는 입력값을 char[] 배열로 받아서 사용하고 있고,

위 코드는 특정 인덱스 문자를 charAt() 메서드로 해당 문자에 문자열을 바로 가져오고 있다.

뭐가 맞다, 틀리다 할 수 없지만, 아무래도 좀 더 직관적인 다름 사람의 코드가 간단해 보인다.

<Javascript 풀이>

const [S, i] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
console.log(S.charAt(i-1));

자바스크립트는 값을 입력받는 과정이

특별히 없기 때문에, 코드가 훨씬 간결하다.

자바스크립트는 거의 비슷한 방식이라 다른 사람의 풀이는 생략하겠다.


문제출처 : https://www.acmicpc.net/problem/2743

[2743] 문자와 문자열

<Java 풀이>

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        String str = st.nextToken();
        System.out.println(str.length());
    }
}

<다른 사람의 풀이>

import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        int count = 0;
        while (System.in.read() != '\n') {
            count++;
        }
        System.out.println(count);
    }
}

입력값이 '\n', 즉 개행이 아닌 경우 count를 더해주면서 길이를 재는데,

성능적인 측면은 잘 모르겠지만,

아이디어 접근법이 참신한 것 같다.

그래도 필자는 되도록 BufferedReader와 StringTokenizer를 이용해서 풀어보겠다.

<Javascript 풀이>

const str = require('fs').readFileSync('/dev/stdin').toString().trim();
console.log(str.length);

그냥 str 부분을 console.log로 출력하면서 한 줄로 끝내고 싶지만,

미관상 ㅎㅎㅎㅎ

 

언제나 새로운 정보 공유와 잘못된 정보

비판/지적/태클은 환영입니다!

도움이 되셨다면 공감♥️, 댓글 부탁드려요:)

끝.

728x90
반응형