목록알고리즘 (9)
기술 블로그
JavaScript에서 문자열 비교와 숫자 정렬 문제 해결JavaScript에서 숫자를 이어 붙여 가장 큰 수를 만들 때 주의해야 할 점과 효과적인 방법을 소개합니다.1. 숫자로 변환 시 정밀도 손실숫자가 매우 크면 Number 타입으로 처리할 때 정밀도가 손실될 수 있습니다. 따라서 큰 숫자를 직접 숫자로 변환해 비교하면 잘못된 결과가 나옵니다.Number("11111112111111121"); // 11111112111111120 (정밀도 손실)2. localeCompare()로 문자열 비교두 숫자를 문자열로 결합한 후 localeCompare()로 비교해 사전식으로 정렬할 수 있습니다. 이 방식은 정확한 비교를 제공합니다.("34" + "9").localeCompare("9" + "34"); // ..
class Heap { constructor() { this.heap = [null]; //0인덱스비워두기 } size() { return this.heap.length; } swap(i, j) { [this.heap[i], this.heap[j]] = [this.heap[j], this.heap[i]]; } heappush(value) { this.heap.push(value); let curIdx = this.heap.length - 1; // 현 노드 (위 value가 들어간 값) let parIdx = (curIdx / 2) >> 0; // 부모노드 while (curIdx > 1 && this.heap[curIdx] < this.heap[parIdx]) { //현 노드가 루트노드가 아니며, 동시..
str.indexOf(찾을 값, 시작위치) 없을경우 -1을 반환한다. str.search(정규식) str.substring(시작,끝) slice와 유사하나 음수를 사용할수없다. str.substr(시작,길이) str.replace(문자열,문자열) 발견된 첫 문자열을 바꾸어 반환한다. str.replaceAll(문자열,문자열) 모든문자열을 바꾸어 반환한다. concat(문자열,문자열) 문자열을 결합한다. 문자열.trim() 공백을 제거한다.
let a = [3, 1, 6, 2, 4, 8, 10, 5, 11, 7, 9]; a.sort(compareNumber); console.log(a); function compareNumber(i, j) { return i - j; } Math 반올림,올림,내림 Math.round(실수) Math.ceil(실수) Math.floor(실수) 거듭제곱, 제곱근 Math.pow(2,3) = 2**3 console.log(Math.sqrt(9)); console.log(Math.pow(3, 5)); console.log(Math.sqrt(9)); //243 //3 최대 최소 console.log(Math.max(1, 2, 3, 4)); console.log(Math.min(1, 2, 3, 4)); //4 //1 ..
잘못된 코드 def solution(name): #위 알파벳 다음 , 아래 알파벳 이전 , #name: 만들어야되는 것 #return: 최소 횟수 #1.해당 문자에서 A가 아닌 변경해야하는것의 위치 #2.그 위치에 따른 최단 커서 이동 #3.각 알팟에서의 최단 커서이동 #jklmnopqrstuvwxyz count = 0 abcstr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' # 26개 25:1 abc = list(abcstr) lenName = len(name) nameArr = list(name) r = 0 l = 0 #a가 아닌것이 앞에서 가까운가 뒤에서 가까운가 # 방향 처리 for i in range(1,lenName): if name[i]!..
def solution(n, lost, reserve): #인접한 학생'한명'에게 대여줄수있음 #여벌은 단 하나 # 제한사항을 잘 고려할것 여벌을 가져온 학생이 도난당했을 수도 있음 mans = [1]*(n+2) # 20201111 for j in reserve: mans[j]+=1 for i in lost: mans[i]-=1 for m in range(1,n+1): if mans[m] == 2: if mans[m-1]==0: mans[m-1] += 1 continue if mans[m+1]==0: mans[m+1] += 1 print(mans) answer = 0 for k in range(1,n+1): if mans[k] >= 1: answer += 1 return answer
def solution(answers): answers answer = [] sol1 = [1,2,3,4,5,1,2,3,4,5]*1000 sol2 = [2,1,2,3,2,4,2,5]*1250 sol3 = [3,3,1,1,2,2,4,4,5,5]*1000 def grading(sol): # 점수 산출 함수 ans=0 for i in range(len(answers)): if sol[i]==answers[i]: ans += 1 return ans p1 = [grading(sol1),1] p2 = [grading(sol2),2] p3 = [grading(sol3),3] pList=[p1,p2,p3] pList.sort() # 점수 정렬 mostScore=pList[2][0] # 최댓값 산출 for pl in p..
def solution(array, commands): result = [] for _ in range(0,len(commands)): i,j,k = commands[_] sa = array[i-1:j] sa.sort() result.append(sa[k-1]) return result
def solution(participant, completion): answer = '' # 1. 두 list를 sorting한다 participant.sort() completion.sort() # 2. completeion list의 len만큼 participant를 찾아서 없는 사람을 찾는다 for i in range(len(completion)): if(participant[i] != completion[i]): return participant[i] # 3. 전부 다 돌아도 없을 경우에는 마지막 주자가 완주하지 못한 선수이다. return participant[len(participant)-1] 다른 곳에서 퍼온 코드 def solution(participant, completion): an..