Algorithm

Algorithm/Baekjoon

[ Algorithm ] Baekjoon_1002 : C++

C++로 백준 1002번 터렛 문제를 풀면서 기하학 개념 없이도 접근할 수 있는 방법을 정리해봤다.문제 이해이 문제를 처음 봤을 때 지문이 어려워서 이해가 잘 안 됐다.핵심만 정리하면 이렇다.두 사람(조규현, 백승환)이 각각 자기 위치에서 적까지의 거리를 알고 있다. 조규현은 좌표 (x1, y1)에 있고 적까지 거리가 r1, 백승환은 좌표 (x2, y2)에 있고 적까지 거리가 r2이다.이걸 기하학적으로 생각하면 각 사람을 중심으로 반지름만큼의 원을 그릴 수 있다. 적은 그 원 둘레 어딘가에 있는 것이다.결국 이 문제의 본질은 두 원의 교점이 몇 개인지 구하는 것이다.쉬운 비유기하학을 모르더라도 이렇게 생각하면 된다.운동장에 두 사람이 서 있다. 각자 줄을 하나씩 들고 있는데, 줄 끝에 적이 있다. 첫 번..

Algorithm

[C++] 코딩테스트에서 endl 대신 "\n"을 써야 하는 이유

C++로 알고리즘 문제를 풀다 보면 자연스럽게 이런 코드를 작성하게 된다. cout 줄바꿈을 할 때 endl을 사용하는 것은 매우 흔한 습관이다.그런데 코딩테스트 관련 글을 보다 보면 이런 이야기를 자주 접하게 된다."endl 대신 \n을 사용하라." 둘 다 줄바꿈을 하는데 왜 굳이 \n을 써야 할까?정말 성능 차이가 있는 걸까?궁금해서 직접 실험을 통해 확인해봤다.endl과 "\n"의 차이표면적으로 보면 두 방식은 같은 역할을 한다.cout 둘 다 출력 후 줄바꿈을 한다.하지만 내부 동작에는 중요한 차이가 있다.동작 방식 endl줄바꿈 + 출력 버퍼 flush"\n"줄바꿈만 수행여기서 핵심은 flush이다.출력 버퍼와 flushcout으로 출력한다고 해서 데이터가 바로 화면에 나타나는 것은 아니다...

Algorithm

[ Algorithm ] 차분 배열 ( Difference Array ) 기법

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 위 프로그래머스 "수열과 구간 쿼리" 문제를 풀다가 차분 배열이라는 것을 알게되었습니다.기존에 제가 작성한 코드는 아래와 같습니다.import Foundationfunc solution(_ arr:[Int], _ queries:[[Int]]) -> [Int] { var result = arr for query in queries { let s = query[0] let e = query[1] for i in s...e { result[i] += 1 } ..

Algorithm/프로그래머스

[ 프로그래머스 ] 코드 처리하기

문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 코드import Foundationfunc solution(_ code:String) -> String { var idx = code.map {String($0)} var mode = 0 var ret: String = "" for i in 0 ... code.count-1 { if mode == 0 { if idx[i] == "1" { mode = 1 }else{ ..

Algorithm/프로그래머스

[ 프로그래머스 ] flag에 따라 다른 값 반환하기

문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 코드import Foundationfunc solution(_ a:Int, _ b:Int, _ flag:Bool) -> Int { return flag == true ? a + b : a - b} 💡풀이flag가 true인지를 비교하여 반환하면 되는 간단한 문제

Algorithm/프로그래머스

[ 프로그래머스 ] 조건 문자열

문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 코드import Foundationfunc solution(_ ineq:String, _ eq:String, _ n:Int, _ m:Int) -> Int { ((eq == "=") ? (ineq == ">" ? n >= m : n " ? n > m : n   💡풀이먼저 =와 !를 비교해준 뒤 >를 통해 한번 더 비교를 해준다.비교값은 bool이기 때문에 참인지 거짓인지 여부를 판단하여 1과 0을 반환.

Sheep1sik
'Algorithm' 카테고리의 글 목록