본문 바로가기

javascript/javascript 백준

[javascript] 백준6단계. 문자열

백준 테스트 도전!

https://www.acmicpc.net/step

 

단계별로 풀어보기

단계별은 @jh05013님이 관리하고 계십니다. 단계제목설명정보총 문제내가 맞은 문제1입출력과 사칙연산입력, 출력과 사칙연산을 연습해 봅시다. Hello World!132if문if문을 사용해 봅시다.73for문for문을

www.acmicpc.net

위 사이트에서 6단계 문자열에 대해 풀어보자.

 

 

2) 숫자의 합(11720번)

   - 문제 : n개의 숫자가 공백없이 쓰여있을 때, 이 숫자를 모두 합해서 출력하는 프로그램

* 헷갈렸던 점

   1. 8줄:let b=String(input[1]) 하고 또 split을 해서 배열에 나눠 담았는데 (한글자씩 더 하기위해서) 문자열이라 그럴필요 없다는 점.

   2. 5줄 b=String을 안붙여도 되는 것 ; 이미 문자열임 ㅠ


3) 알파벳 찾기(10809번)

   - 문제 : 첫째줄에 단어 S가 주어지고, 각각의 알파벳에 대해 a가 청므 등장하는 위치, b가 처음 등장하는 위치... 를 출력

    1. 처음엔 아스키코드를 이용할 생각을 못하고, 직접 a~z까지 입력해서 비교를 했다. 여기서도 헷갈렸던 것은 문자열이라 split으로 안나누어도 된다는 것.

    2. 아스키코드를 이용해서 풀어보았다.

 


4) 알파벳 찾기(10809번)

   - 문제 : 첫째줄에 테스트 케이스의 개수가 주어지고, 문자열 s를 테스트 케이스만큼 반복하는 것.

 * 오류났던 점 : join메소드는 배열에 쓰는건데, 7번줄 let total='';로 문자열로 만든 뒤, join으로 더할 생각을 했다.

굳이 join쓰려고 배열로 안 바꾸어도 되고, 문자열이니 바로 +해주면 된다 ;;;;


5) 단어공부(1157번)

   - 문제 : 첫째줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력할 것. 여러개면 ?로 출력

이것도 정답! 첫째줄에 trim()추가해줬더니 정답이네

그런데 메모리 사용량이 장난아니다. 2번째 풀이에 비해 5배정도..

 

 

 

 

 

2번째 풀이 : 객체의 value값으로 key값을 가져오는 find함수를 사용.

우선 3번 for문에서 객체 내에 해당 글자가 있으면 +1, 없으면 하나 만들어준다.

6번째줄에서 getKey라는 함수를 만들어서 Object.keys란 객체의 key값을 가져오는 메소드를 사용하여 내가 원하는 value값의 key값을 가져온다. 그러고 9번째줄에서 value값만 sort해서 내림차순으로 정렬했다. 여기서 0,1인덱스의 값이 같다면 최대값이 2개 이상인 것이니까, 그럴땐 "?"를 출력. 아닐땐, 내림차순한 test2의 0번째숫자의 key값을 가져옴

 


7)상수(2908번)

   - 문제 : 숫자를 거꾸로 읽는 상수, 두 수가 적혀있을 때 큰값을 비교하라 했을 때, 상수의 대답은?

 


8) 다이얼(5622번)

   - 문제 : 다이얼을 걸기 위해 필요한 최소 시간을 출력하라.

하드코딩해버렸다... ㅎ count를 자동으로 부여해주는 for문을 만들 수 있을 것 같은데...... 추후에 재도전!


9) 크로아티아 알파벳(2942번)

   - 문제 : 다이얼을 걸기 위해 필요한 최소 시간을 출력하라.

1. list에 제거하고 싶은, 교체하고 싶은 목록을 배열로 만들고

2. for of로 input을 list의 요소 하나하나로 쪼갠다. 그런다음 공백으로 다시 연결=>공백으로 교체한 것과 같다. 

3. length는 공백의 글자까지 세어주니까 공백으로 모두 교체후 글자수를 세어주며 된다.

 

<- 마지막 console.log빼고 지우고 제출@

 

 

 


10) 그룹단어체커(1316번)

   - 문제 : 

푸는중.......