7/15 2주차 알고리즘 문제 및 풀이 1~3번 문제

강인호·2022년 7월 19일
0

알고리즘 문제풀이

목록 보기
1/39

1번문제

일단 첫번째 문제는 요일을 구하는 문제였다. 계속 고민을 해보던중 처음에는 a*30+b를 해서 끝의 7자리를 구해서 리스트 인덱스에 넣어보는 그런식으로 접근을 해보던중

날짜 함수가 따로 있는것을 알게되었고 적용했더니 1차적으로는 통과가 뜨는것이다.

그때 당시의 나의 코드가

이거였는데 1월1일이 금요일이라는 조건을 보고 금요일부터 시작하는 1주일의 리스트를 만들었고 거기서 getday()로 구한 값의 인덱스를 찾는 방식으로 썼다.

그중에 인덱스가 0번째부터 시작해서 b에 -1을 해줬는데

채점을 하니 정확도60%가 나오면서 정답이 아니라는것을 알게되고 date함수와 getday함수에 대해서 계속 검색해본 결과 발견한 문제점은

첫번째로 나는 1월1일이 금요일이라서 금요일로 시작하는 리스트를 만들었는데 getday()함수는 일요일을 기준으로 0~6까지의 숫자를 반환해주는 함수기 때문에 일단 리스트를 잘못 만들었고

두번째로는 7개의 요일을 0~6까지의 숫자를 반환하는 것이기 때문에 b에다가 -1을 한 것도 잘못이였다.

그래도 계속해서 정답이 아니여서 찾아보던 중 마지막 이유를 발견했는데,

i를 빼고 날짜만 출력했을 때 자꾸 6월로 나오길래 검색해 본 결과 date함수는

요일을 0~6까지 세듯이 월도 0~11월까지 세는것을 알게되었고 a에-1을하니

모든 날짜에 적용했을 때 에도 100% 적중률이 나오면서 정답이 되었다.

최종코드는

2번문제

2번문제는 조건문 문제인데 일단 접근을 if함수를 써서 나눴을때 0이 나오면 리스트에 추가하는 식으로 처음 접근했다.

빈 리스트 s를 만들어 놓고 주어진 arr의 리스트의0번째 인덱스가 divisor과 나누어 떨어지면 s에 추가하는 식을 짜보았고 그 후에 s를 sort함수로 오름차순 정렬하는 식으로 짜보았다.

그런데 자꾸 오름차순 정렬을 해도 제대로 정렬이 되지않아 검색해본 결과 자바스크립트의 sort는 숫자의 크기순이 아닌 다른 기준이 있어서 따로 조건을 설정해줘야 한다는 것을 알았고

사진의 코드를 구해와서 적용을 하면

a-b를 리턴하라는 조건을 넣으면 무조건 a가 b보다 커야하기 때문에 숫자의 크기로 정렬이 된다고 하였다. s에서 정렬된 값을 answer에

그리고 마지막으로 조건을 충족시키는 값이 없을때엔 리스트에 -1을 넣어서 출력해야 하기 때문에

모든 for문이 돌아간 후에 answer에 들어간 값이 없으면 -1을 넣어주는 식을 넣었고

최종코드는 이렇다

근데 짜고 보니 굳이 s를 따로 만들지않고 빈 리스트를 answer로 설정하고 answer에

바로 넣어도 될 것 같아서 축소를 해보았는데

처음부터 s라는 리스트를 건너서 담을 필요없이 answer에 바로 담아도 정상적으로 구동이 되었다.

3번문제

3번문제를 처음보고 한 접근은 홀수번째의 글자에는 수 를 출력하고 짝수 번째의 글자에는

박 을 출력하는 식으로 접근을 하다가 뭔가 계속 마땅치 않아서 그냥 무수히 반복되는 글자열에 n번째로 끊으면 되지 않을까란 생각을 했고

"수박" 이란 글자를 5000번 반복해서 n번째로 끊는 substr함수를 사용하니 해결되었다.

최종 코드는

근데 10000이하인 자연수라 5000번을 곱했는데 5000자리에 n을 넣는게 더 깔끔할것같다.

0개의 댓글