func solution(X:Int, Y:Int, D:Int) -> Int{
var result = (Y-X)/D
let cha = (Y-X)%D
if cha > 0{
result += 1
}
if X >= Y{
result = 0
}
return result;
}
func solution(X:Int, Y:Int, D:Int) -> Int{
var result = (Y-X)/D
let cha = (Y-X)%D
if cha > 0{
result += 1
}
if X >= Y{
result = 0
}
return result;
}
-Find value that occurs in odd number of elements.
N개의 배열에서 짝을 이루지 않는 값을 찾아내기
프로그래머스에서 몇개 풀고왔는데 비슷한 문제가 나왔다
Map을 사용해서 getOrDefault함수를 사용했다
그리고 마지막엔 나머지값이 1인 값을 찾아내기!
public int solution(int[] A) { // write your code in Java SE 8 Map<Integer, Integer> map = new HashMap<>(); for(int i=0; i<A.length; i++){ map.put(A[i], map.getOrDefault(A[i], 0) + 1); } for(int key : map.keySet()){ if(map.get(key) % 2 == 1) {
return key;
}
} return -1; }
다른사람이 짠 코드도 비슷하다
하하 이번엔 비슷했다.
SWIFT버전
public func solution(_ A : inout [Int]) -> Int {
// write your code in Swift 4.2.1 (Linux)
var map = Dictionary<Int, Int>();
A.forEach { index in
map[index] = (map[index, default: 0]) + 1
}
var result = -1
map.forEach { (key: Int, value: Int) in
if(value % 2 == 1){
result = key
}
}
return result
}
Rotate an array to the right by a given number of steps.
-배열을 주어진 숫자만큼 돌려서 원하는 값을 찾는다
-변경되어야 할 배열순사를 지켜야했음
-내가 짠 코드
public static int[] solution(int[] A, int K) {
// write your code in Java SE 8
int[] result = new int[A.length];
System.err.println("lenth = "+A.length);
if(A.length == K){
return A;
}
for (int i = 0; i < A.length ; i++) {
result[(i+K) % A.length] = A[i];
System.err.println("i = "+i+" = "+result[i]);
}
for (int i = 0; i < result.length; i++) {
System.err.println("a["+i+"] = " +result[i]);
}
return result;
}
--다른사람이 짠 코드
class Solution {
public int[] solution(int[] A, int K) {
// write your code in Java SE 8
int len = A.length;
if(len == 0 || K % len == 0) return A;
int [] ans = new int [len];
K = K % len;
for (int i=0; i< len; i++){
ans[(i+K) % len] = A[i];
}
return ans;
}
}
역시 개깔끔...나는 멀었나보다
-swift 코드
public func solution(_ A : inout [Int], _ K : Int) -> [Int] { // write your code in Swift 4.2.1 (Linux) if A.count == K{ return A } var result = A for i in 0..<A.count{ let num = (i+K)%A.count result[num] = A[i] } return result }
BinaryGap
Find longest sequence of zeros in binary representation of an integer.
이진법으로 변환 후 1과 1사이의 0의 값을 추출한다.
내가 푼 방법
public static int solution(int N) {
// write your code in Java SE 8
String binary = Integer.toBinaryString(N);
List<Integer> aArray = new ArrayList();
int result = 0;
for (int i = 0; i < binary.length(); i++) {
if(binary.charAt(i) == '1') {
aArray.add(i);
}
}
int max = 0;
int val = 0;
for (int i = 0; i < aArray.size() -1; i++) {
if(i == 0) {
max = binary.substring(aArray.get(i), aArray.get(i+1)).length() -1;
}else {
val = binary.substring(aArray.get(i), aArray.get(i+1)).length() -1;
}
if(i > 0) {
max = Integer.max(max, val);
}
}
if(aArray.size() < 2) {
max = 0;
}
return max;
}
-> 다른 사람이 푼 코드
class Solution {
public int solution(int N) {
// write your code in Java SE 8
String binaryNum = Integer.toBinaryString(N);
int temp = 0;
int maxLen = temp;
for(int i=1; i< binaryNum.length(); i++){
if(binaryNum.charAt(i) == '0') temp++;
else{
maxLen = Math.max(maxLen, temp);
temp = 0;
}
}
return maxLen;
}
}
개깔끔.. 왜 저생각을 못했지.. 분발하자!
SWIFT 버전
public func solution(_ N: Int) ->Int{
var result = 0
let binary = String(N, radix: 2, uppercase: true)
var tmp = 0;
for char in binary {
if char == "0"{
tmp += 1
}else{
result = max(result, tmp)
tmp = 0
}
}
return result
}