레야몬
1620번 나는야 포켓몬 마스터 이다솜 - 해시 본문
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct _poke {
int n[50000]; //포켓몬 번호
int num; //개수
} poke[27][27];
int f(char a) //소문자를 대문자로 바꿔줌
{
return a>='a' ? a-20-'A':a-'A';
}
int main()
{
int N, M;
int i, j, k;
char name[100000][21]={};
char s[21];
scanf("%d %d", &N, &M);
for(i=1; i<=N; i++) {
scanf("%s", name[i]); //포켓몬 이름 받기
poke[f(name[i][0])][f(name[i][1])].n[poke[f(name[i][0])][f(name[i][1])].num++]=i;
} //앞에 두 글자로 나누기
for(i=0; i<M; i++) {
scanf("%s", s);
if(s[0]>='A') { //문자열임
for(j=0; j<poke[f(s[0])][f(s[1])].num; j++) {
if(!strcmp(name[poke[f(s[0])][f(s[1])].n[j]], s)) {
printf("%d\n", poke[f(s[0])][f(s[1])].n[j]);
break;
}
}
}
else
printf("%s\n", name[atoi(s)]);
}
return 0;
}
atoi(list): list 문자열을 정수로 반환하고, 숫자가 아닐 경우 0을 반환한다. <stdlib.h>
strcmp(s1, s2): 문자열 s1이 문자열 s2보다 크면 1, 작으면 0, 같으면 0을 반환한다. <string.h>
100000만번을 판단해야했기 때문에 strcmp로 일일이 판단하는 것은 무리라고 판단.
앞에 두 글자만 선택해서 이차원 배열에 나눠서 저장했다. 다 풀고 나서 다른 사람 코드를 보는데 해시로 푸는 사람도 있었다.
처음보는 알고리즘이라서 블로그에서 공부했다. 링크는 아래에
<strcmp()>
https://dojang.io/mod/page/view.php?id=346
C 언어 코딩 도장: 41.2 문자열 비교하기
strcmp 함수를 사용하면 두 문자열이 같은지 비교할 수 있으며 함수 이름은 문자열을 비교하다(string compare)에서 따왔습니다(string.h 헤더 파일에 선언되어 있습니다). strcmp(문자열1, 문자열2); int strc
dojang.io
<atoi()>
https://dojang.io/mod/page/view.php?id=385
C 언어 코딩 도장: 46.1 문자열을 정수로 변환하기
46 문자열과 숫자를 서로 변환하기 프로그램을 만들다 보면 내용은 숫자이지만 형태는 문자열인 경우를 자주 만나게 됩니다. 예를 들면 다음과 같이 텍스트 파일에 문자와 숫자가 섞인 상태로
dojang.io
<구조체>
https://dojang.io/mod/page/view.php?id=408
C 언어 코딩 도장: 48.1 구조체를 만들고 사용하기
구조체는 struct 키워드로 정의합니다. struct 구조체이름 { 자료형 멤버이름; }; 구조체는 정의만 해서는 사용을 할 수가 없습니다. 따라서 구조체도 변수로 선언해서 사용합니다. struct 구조체이름
dojang.io
<자료구조 - 해시>
https://go-coding.tistory.com/30
[자료구조] Hash의 개념 및 설명
코딩테스트 문제를 풀다가 막히는 문제가 있었다. 내가 지금까지 배운 여러가지 자료구조를 생각해보았지만 딱히 올바른게 떠ㅎ오르지 않아서 힌트를 보았다. 힌트를 보니 '이분 탐색, 해시를
go-coding.tistory.com
내가 봤던 코드. 솔직히 보고 감탄했다. (한 번 풀어야 볼 수 있습니다.)
https://www.acmicpc.net/source/38626243
로그인
www.acmicpc.net
※현재 고등학교 등교중인 학생입니다. 이제 알고리즘을 본격적으로 공부하기 시작해서 아직 초보입니다. 혹시 제가 잘못 알고있는 점이나 더 좋은 풀이 방법이 있어 댓글에 남겨주시면 감사히 하나하나 열심히 읽어보겠습니다. 좋아요, 단순한 댓글 한마디라도 저에겐 큰 힘이 됩니다! 감사합니다.
'알고리즘 > 백준' 카테고리의 다른 글
1764번 듣보잡 - 해시, 정렬, 이분탐색 (0) | 2022.08.24 |
---|---|
1697번 숨바꼭질 - BFS (0) | 2022.08.23 |
1463번 1로 만들기 - DP (0) | 2022.08.23 |
1012번 유기농 배추 - 분할정복, 재귀함수 (0) | 2022.08.22 |
1012번 유기농 배추 - 그래프이론 (0) | 2022.08.22 |