본문 바로가기

알고리즘

(5)
[알고리즘]팰린드롬(palindrome) 체크 알고리즘 # 문제 정수(int)가 주어지면, 팰린드롬(palindrome)인지 알아내시오. 팰린드롬이란, 앞에서부터 읽으나 뒤에서부터 읽으나 같은 단어를 말합니다. 단, 정수를 문자열로 바꾸면 안됩니다. 예제)Input: 12345Output: False Input: -101Output: False Input: 11111Output: True Input: 12421Output: True ------------------- 해당 문제는 팰린드롬 수를 체크하는 알고리즘을 짜는 것이다.이전 알고리즘 문제보단 꽤 간단하게 풀수 있었다.(단 음수일 경우 팰린드롬이 되지 않는다는것을 명심하자) # 소스코드 123456789101112131415161718192021222324252627282930313233343536373..
[알고리즘]배열의 이어지는 인터벌 최대합 구하기 # 문제 정수 배열(int array)가 주어지면 가장 큰 이어지는 원소들의 합을 구하시오. (단, 시간복잡도는 O(n)) Input: [-1, 3, -1, 5]Output: 7 // 3 + (-1) + 5 Input: [-5, -3, -1]Output: -1 // -1 Input: [2, 4, -2, -3, 8]Output: 9 // 2 + 4 + (-2) + (-3) + 8------------------- 해당 문제는 마이크로소프트 코딩 테스트이다.문제는 간단하다. 그저 이어지는 배열의 가장 큰 합을 구하면 된다. 시간 복잡도가 O(n)이기 때문에 반복문 한번만에 풀어야하는데이게 꽤 골치가 아팠다.머리를 싸매며 풀어봤지만, 나는 결국 이 문제를 풀지 못했다. 다른 사람들의 해답을 보니 간단했었는데...
[코딜리티/Codility] CyclicRotation 문제 # 문제 배열이 주어지고 정수가 주어지면, 정수의 수 만큼 배열의 끝값을 앞으로 옮기고, 정리된 배열을 리턴하는 함수를 만들라는 것이다. 메게변수로는 A와 K가 주어진다.A는 정수 배열이 넘어오고 K는 로테이션 횟수이다. 예를 들어 A = [3, 8, 9, 7, 6]K = 3 가 주어지면 리턴 배열은 [9, 7, 6, 3, 8] 가 된다. 다른 수로 예를 들어보자.K=5이라면 [3, 8, 9, 7, 6] -> [6, 3, 8, 9, 7][6, 3, 8, 9, 7] -> [7, 6, 3, 8, 9][7, 6, 3, 8, 9] -> [9, 7, 6, 3, 8] 이런식으로 나올테고 A = [0, 0, 0]K = 1 라면 [0, 0, 0] 이 나올것이다. A = [1, 2, 3, 4]K = 4 라면 [1, 2,..
[코딜리티/Codility] OddOccurrencesInArray 문제 # 문제 간단하게 말하면 중복값을 제거한 후 나머지 유니크한 값을 리턴해주는 함수를 만드는 것이다.예를 들어 A[0] = 9 A[1] = 3 A[2] = 9 A[3] = 3 A[4] = 9 A[5] = 7 A[6] = 9 위와 같은 배열이 들어오면 인덱스 0, 2가 9의 값으로 중복이므로 삭제인덱스 1, 3가 3의 값으로 중복이므로 삭제인덱스 4, 6가 9의 값으로 중복이므로 삭제나머지 7의 값이 유니크 값이므로 7을 리턴해 줌 이런식으로 소스코드를 구현해 주면 된다. # 초기 소스코드 1234567891011121314151617181920class Solution { public int solution(int[] A) { int index = 0; String ValueTxt = ""; // 배열의 ..
[코딜리티/Codility]이진 갭(Binary Gap) 알고리즘 # 여는 글 안녕하세요, 음냐음 입니다.여러분들은 코딜리티(Codility)라는걸 아십니까?저도 우연찮게 코딜리티(Codility)를 알게되었는데,알고리즘 풀이 사이트입니다.저도 한번, 풀어봤는데 꽤 괜찮더라구요.그런의미에서 한번 공유해 보겠습니다. # 문제 양수의 int 형 숫자를 이진수로 표현하였을때 1과 다른 1의 차이(Binary Gap), 즉 1과 다른 1사이의 0의 개수가 최대인 경우를 찾아야 한다.예를들면 9는 이진수로 1001 이니 1과 1사이에 0이 2개가 있어 Binary Gap의 길이는 2이다. 529같은 경우는 이진수1000010001 이며 Binary Gap 은 총 2개인데, 100001의 부분의 4와 1001 부분의 3이다. 이때 최대값은 4이므로 4를 리턴하면 된다.정수의 범위..