전체 글

개발 기록 블로그
개발/Java

[Java] ==연산자와 equals() 차이 정확히 알기

아마 자바를 접한지 얼마 안되었다면 ==연산자가 값이 같은지 비교하는 연산자로 알고 있을 수도 있다. 특별한 상황을 제외하고 결과값이 거의 그렇게 나오기 때문이다. 하지만, 정확히 말하면 == 연산자는 메모리 참조 주소를 비교하는 연산자이다. equals()가 값을 비교하는 함수이다. 예를 들면, 아래 코드의 결과값을 예상해보자. String a = "apple"; String b = "apple"; String c = new String("apple"); System.out.println(a==b); System.out.println(a==c); System.out.println(a.equals(c)); System.out.println(b.equals(c)); 답 확인 더보기 true false tr..

기타/엘카데미

[엘카데미 챌린지] 21일차 파이썬 알고리즘 (8) 마무리

1. 개요 오늘도 어김없이 알고리즘 문제를 풀이하였다. 딕셔너리를 이용해 동명이인을 찾는 문제와 큐를 이용해 모든 친구를 찾고 친밀도를 계산하는 문제를 풀이하였다. 오늘부로 엘카데미 챌린지가 종료되었다. 3주간 알차게 학습한 것 같다. 앞으로도 포스팅은 계속 이어나갈 것이다. 2. 문제 1) 딕셔너리를 이용해 동명이인을 찾는 알고리즘 n명의 사람 이름 중에 같은 이름을 찾아 집합으로 만들어 돌려주는 알고리즘을 생각해 보자. 리스트 s를 매개 변수로 받아 딕셔너리에서 등장 횟수가 2 이상인 것들 결과에 추가하여 집합 result에 저장해 반환하는 함수 find_same_name을 작성하라. 풀이 1. 각 이름이 등장하는 횟수를 저장할 빈 딕셔너리(name_dict) 생성 2. 입력으로 주어진 리스트에서 각..

기타/엘카데미

[엘카데미 챌린지] 20일차 파이썬 알고리즘 (7)

1. 개요 오늘은 이분 탐색 알고리즘과 회문 찾기 알고리즘을 풀이하였다. 회문(Palindrome)은 앞으로 읽으나 뒤로 읽으나 동일한 단어, 구절, 문장 등을 말한다. 예를 들면 한글로는 토마토, 기러기, 영어로는 madam, wow 등이 있겠다. 점점 생각할거리가 많아지는 문제들이 빈번하게 나타나고 있다. 또 알고리즘을 풀이하는데 사용된 자료구조의 개념을 간단하게 정리하였다. 2. 문제 1) 이분 탐색 알고리즘 리스트 a와 비교값인 변수 x를 받아 리스트 a의 원소와 x와 같다면 x를 반환하고 아닐 경우 -1를 반환하는 함수 binary_search를 작성하세요. 풀이 1. 중간 위치를 찾는다. 2. 찾는 값과 중간 위치 값을 비교 3. 같다면 원하는 값을 찾은 것이므로 위치 번호를 결괏값으로 반환 ..

기타/엘카데미

[엘카데미 챌린지] 19일차 파이썬 알고리즘 (6)

1. 개요 오늘은 병합 정렬 알고리즘과 퀵 정렬 알고리즘 문제를 풀이하였다. 알고리즘을 이제 막 입문하다보니 생각보다 시간이 꽤 걸린 것 같다. 알면 알수록 고려해야할 부분이 굉장히 많은 것 같다. 2. 문제 1) 쉽게 설명한 병합 정렬 알고리즘 리스트 a를 매개 변수로 받아 병합 정렬을 하여 리스트 result에 저장해 반환하는 함수 merge_sort를 작성하세요. 풀이 병합 정렬을 사용하여 리스트 안의 자료를 작은 수부터 큰 수 순서로 배열하는 알고리즘을 생각해 보면, 1. 정렬할 리스트의 자료 개수가 한 개 이하이면 정렬할 필요가 없다. 2. 전체 리스트를 절반으로 나눠 각각 재귀 호출을 통해 병합 정렬을 한다. 3. 두 그룹의 첫 번째 값을 비교하여 작은 값을 빼내 결과 리스트에 넣는 과정을 반..

기타/엘카데미

[엘카데미 챌린지] 18일차 파이썬 알고리즘 (5)

1. 개요 오늘은 어제 쉽게 설명한 선택 정렬 알고리즘을 더 효율적으로 구현하는 방법에 대해 고민해보았고, 삽입 정렬 알고리즘 문제를 풀이하였다. 2. 문제 1) 일반적인 선택 정렬 알고리즘 어제 쉽게 구현한 선택 정렬 알고리즘을 효율적으로 구현할 수 있는 일반적인 알고리즘을 구현해 보자. 리스트 a를 매개 변수로 받아 자료 값중 가장 최솟값을 차례대로 정렬해주는 함수 sel_sort를 작성하라. 풀이 일반적인 선택 정렬 알고리즘은 입력으로 주어진 리스트 a안에서 직접 자료의 위치를 정렬시키는 알고리즘이다. 처리할 대상 범위에서 최솟값을 찾아 그 값과 범위의 맨 앞에 있는 값을 서로 바꾸는 과정을 반복한다. 이 과정이 한 번 끝날 때마다 범위 안의 맨 앞에 있는 값은 정렬이 끝난 것이므로 정렬 대상 범위..

기타/엘카데미

[엘카데미 챌린지] 17일차 파이썬 알고리즘 (4)

1. 개요 오늘은 정렬 알고리즘을 풀이하였다. 2. 문제 1) 순차 탐색 알고리즘 순차 탐색 알고리즘을 활용하여 리스트 a와 비교값인 변수 x를 받아 리스트 a의 원소와 x와 같다면 x를 반환하고 아닐 경우 -1를 반환하는 함수 search_list를 작성하세요. 풀이 def search_list(a, x): for i in range(len(a)): if a[i] == x: return i return -1 # 테스트 예시 v = [17, 92, 18, 33, 58, 7, 33, 42] print(search_list(v, 18)) # 2(순서상 세 번째지만, 위치 번호는 2) print(search_list(v, 33)) # 3(33은 리스트에 두 번 나오지만 처음 나온 위치만 출력) print(se..

기타/엘카데미

[엘카데미 챌린지] 16일차 파이썬 알고리즘 (3)

1. 서론 오늘은 for문을 통해 구현할 수 있는 알고리즘을 재귀 호출을 이용해 구현해 보았고, 어떤 게 더 효율적인지 생각해보았다. 2. 문제 1) for문을 사용하여 1부터 n까지 곱을 반환하는 알고리즘 for문을 사용하여 변수 n을 입력받아 1부터 n까지의 곱을 반환하는 함수 fact을 작성하세요. 풀이 def fact(n): result = 1 for i in range(1, n + 1): result *= i return result print(fact(1)) print(fact(5)) print(fact(10)) 2) 재귀 호출을 사용하여 1부터 n까지 곱을 반환하는 알고리즘 재귀 호출 알고리즘을 사용하여 변수 n을 입력받아 1부터 n까지의 곱을 반환하는 함수 fact을 작성하세요. 풀이 de..

기타/엘카데미

[엘카데미 챌린지] 15일차 파이썬 알고리즘 (2)

1. 서론 파이썬 알고리즘 풀이 2일차. 강의는 '모두의 알고리즘 with 파이썬'이다. 챌린지를 진행한지도 2주가 지났다. 오늘도 분발. 2. 문제 동명이인을 찾는 알고리즘 동명이인을 찾는 알고리즘을 만들어 봅시다. 첫 번째 Tom을 뒤에 있는 Jerry, Mike, Tom과 차례로 비교합니다. 첫 번째 Tom과 마지막 Tom이 같으므로 동명이인입니다(동명이인: Tom). 두 번째 Jerry를 뒤에 있는 Mike, Tom과 비교합니다(앞에 있는 Tom과는 이미 비교했음). 세 번째 Mike를 뒤에 있는 Tom과 비교합니다. 마지막 Tom은 비교하지 않아도 됩니다(이미 앞에서 비교했음). 같은 이름은 Tom 하나뿐입니다. 이 알고리즘에서 주의할 점은 다음과 같습니다. 이번에 비교할 이름을 뽑은 다음에는 ..

actt
코딩박스