알고리즘
[Java, Python] 10809 알파벳 찾기 - ASCII Code, Char to Int
Garonguri
2022. 1. 20. 00:45
728x90
ㅎㅇ
https://www.acmicpc.net/problem/10809
10809번: 알파벳 찾기
각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출
www.acmicpc.net
잼나는 문제를 풀어보았어용
[Java]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class bj10809 {
static int[] alpha;
static boolean[] visit;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String S = br.readLine();
//97(a)-122(z)
int tmp =0;
alpha = new int[26];
for(int i=0;i<26;i++)
alpha[i] = -1;
visit = new boolean[26];
for(int s=0; s<S.length();s++){
tmp = S.charAt(s) -'0'-49;
if(!visit[tmp]) {
alpha[tmp] = s;
visit[tmp] = true;
}
}
for(int i=0; i<26;i++){
System.out.print(alpha[i] + " ");
}
}
}
|
cs |
수업 할 때는 스캐너를 주로 쓰는데 뭔가 알고리즘 풀 때는 버퍼리더를 쓰고싶은 마음이 든다. 메모리와 시간이 줄어드는 것을 보며
희열을 느끼기 때무니다
적당히 입력 받아서 한 글자씩 읽었다
없는 알파벳은 -1이어야 하므로 -1로 초기화를 했고 맨 첫 번째 알파벳 위치를 찾기 위해 방문했는지를 표시하는
boolean type 배열도 하나 만들어서 넣어두었다.
방문 안한 알파벳만 새롭게 넣어두게 하였다. 캐릭터형 타입의 문자를 -'0'를 통해 아스키코드 숫자로 변환시켜 주고
49를 빼서 0부터 시작하게끔 하였다!
끄읕
[python]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
from sys import stdin
S = stdin.readline().strip()
alpha = [-1]*26
visit = [0]*26
for idx, s in enumerate(S):
tmp = ord(s)-97
if visit[tmp] ==0:
alpha[ord(s)-97] = idx
visit[ord(s)-97] = 1
for a in alpha:
print(a, end =" ")
|
cs |
문자열은 모다? 파이썬이다
과정은 비슷하므로 설명을 생략하겠당
아!!!! 하나 중요한 것이 있다 -> readline()으로 받아올 때는 맨 오른쪽에 개행 문자가 추가되므로 strip() (양쪽 둘다 없앰) rstrip(오른쪽 없앰)으로 혹시 모를 개행들을 제거해주는 작업이 필요하다!
배열을 개수 딱 맞춰 선언했기 때문에 불가피하다
구럼 끝
728x90