코딩테스트 21

[SQL] order by substr (Oracle)

Oracle에서 substr은 이렇게 활용한다. 예로서 Students 라는 테이블에 아래와 같이 레코드가 정의되어있다고 가정하면 각각의 쿼리 결과물은 이렇다. // 1) select substr(name, 2) from students; // result is 'teven' // 2) select substr(name, 2, 2) from students; // result is 'te' // 1) select substr(name, -2) from students; // result is 'en' // 2) select substr(name, -2, 1) from students; // result is 'e' 그리고 이건 기억하기 위한 메모. 쿼리 결과를 정렬할 때 order by substr와 같..

[1735] 분수 합(C#)

알고리즘 : 유클리드 호제법 난이도 : Silver Ⅲ 유클리드 호제법을 활용하여 푸는 문제. 유클리드 호제법(Division algorithm) 이란? 주로 큰 두 수의 최대공약수를 파악하기 힘든 경우에 먼저 '큰 수'를 '작은 수'로 나눈 나머지를 구한 뒤 '나눴던 수'를 그 '나머지'로 나누는 과정을 되풀이하여 최종적으로 나머지가 0이 될 때 마지막 계산에서 나누는 수로서 최대공약수를 얻을 수 있다. 예를 들면 아래와 같다. string[] strFirstFraction = Console.ReadLine().Split(' '); string[] srtSecondFraction = Console.ReadLine().Split(' '); int[] firstFraction = Array.ConvertA..

[1676] 팩토리얼 0의 개수(C#)

알고리즘 : 구현 난이도 : Silver Ⅴ 규칙을 찾아내어야 하는 문제. 팩토리얼 연산을 수행하다 보면 0의 개수에 대한 규칙이 보인다. 처음에는 5의 배수만큼 0가 증가하는 것으로 판단했는데, 25쯤 가니까 갑자기 0이 추가로 증가하는 것을 보고서 단순 5의 배수가 아니라는 것을 알게됐다. (25!에서는 0가 6개..) 알고보니 10의 개수로 세는거였다. 그런데 이 때 10 = 2 * 5 이므로 5의 개수를 세면 된다고 착각할 수 있었는데, 음.. 비슷하다. 5의 등장 횟수보다 2의 등장 횟수가 더 많으므로. 그러나 25의 경우에는 5 * 5 이므로, 여기에 2를 두 번 곱하여 10을 만들 수 있기 때문에 10이 한번에 두번 등장하는 것과 동일하게 볼 수 있다.(일타쌍피!) 그러니까 25!을 살펴보면..

[1459] 걷기(C#)

세준이가 집에 가기까지 걸리는 최소시간을 구하는 문제. 처음에는 복잡하게 생각했다. 경우의 수를 나누어 하나의 값만 도출되게 했는데, 가지수를 크게 나누어 min값을 출력하면 된다. 나는 대각선으로 최대한 이동할 수 있는 만큼 이동 후 수평이동 조건을 생각하지 못해서 예제입력 6번이 제대로 재현이 안 되는 난관을 겪었다...🥺 난.. 언제쯤.. 알고리즘 : 많은 조건 분기 난이도 : 실버 Ⅴ 정답 비율 : 26.248% string[] inputs = Console.ReadLine().Split(' '); long X = long.Parse(inputs[0]); long Y = long.Parse(inputs[1]); int costofline = int.Parse(inputs[2]); int costo..

[Basic Join] Contest Leaderboard(Oracle)

Level : SQL(Intermediate) 💡 Key note Hacker의 total score란 모든 challenges의 max 점수에 대한 합임. 두 번의 삽질이 있었다. 첫째, 모든 challenges의 score를 더하는 줄 알았다가 실패. 둘째, challenges별 max 점수인데, partition by 시 엄한 submission_id로 잘못 이해해서 실패..(어휘력 무엇..) 사실 partition by도 필요가 없었다. max 함수를 활용해서 통과했다. -- hacker_id, name, total score를 출력 -- 이 때 total score 가 높은 순으로 출력 -- 같은 total score인 hacker가 둘 이상일 경우 hacker_id순으로 출력 -- total ..

[1333] 부재중 전화(C#)

문제 이해하는데 좀 걸렸다. (어휘력을 길러야될 것 같음....😒 책 읽어야 돼 책) 결과적으로는 단순풀이법으로 아래와 같이 풀이를 했는데. 이 때 while 구문에서 if로 풀이하면 안 된다. 아래와 같은 Testcase의 경우에는 fail이 나기 때문. "1곡 재생, 한 곡당 7초 길이, 2초마다 벨이 울릴 경우" 알고리즘 : 단순 구현, 시뮬레이션 string[] NLD = Console.ReadLine().Split(' '); int N = int.Parse(NLD[0]); int L = int.Parse(NLD[1]); int D = int.Parse(NLD[2]); // 침묵의 구간 int[] fadeRange = { L, L + 5 }; // 벨이 울리는 시간(초) int secOfLastR..

[Basic Join] Top Competitors(Oracle)

Level : SQL (Intermediate) 💡 Key note 1. Score가 100이 무조건 만점이 아님. 반드시 Difficulty table을 활용해야 함. 2. 만점을 2번 이상 받은 해커를 출력함. (문제에서 More than one challenge 부분) -- hacker_id, name을 출력함 -- 이 때 하나 이상의 challenge에서 만점을 받은 hacker를 출력함 -- 이 때 만점 받은 challenge의 개수가 높은 순으로 출력함 -- 만점받은 개수가 동일한 해커에 대해서는 hacker_id에 대해 ascending ordering 함 select subquery.hacker_id, subquery.name from ( select sub.hacker_id, hac.na..

[Basic Join] The Report(Oracle)

Level : SQL (Intermediate) HackerRank에서 지난번에 The PADS 문제를 풀면서 We Do not allow non ASCII characters for this challenge 에러가 왜 발생하는지 모른채로 지나갔었다. [Advanced select] The PADS(Oracle) We Do not allow non ASCII characters for this challenge 와 같은 유사한 오류문구가 출력됐었는데, 아직 언제 이런 오류가 뜨는건지는 잘 모르겠다. 어쨌든 아래는 처음에 안되었지만.. 다시해보니 성공한 quer jy0605.tistory.com 이제 원인을 알게 됐다. Query 초반에 달아두었던 주석을 모두 지우면 해당 에러가 발생하지 않는다. ;;;..

728x90
반응형