[BOJ] Python 백준 10818번 최소, 최대 브론즈 3

728x90

https://www.acmicpc.net/problem/10818

 

10818번: 최소, 최대

첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.

www.acmicpc.net

문제 풀이


언어를 배우는 초기에 풀어볼 법한 아주 기초적인 문제라 포스팅하지 않으려 했지만 생각보다 정답 비율이 엄청 낮아서 작성하기로 했다.

 

단순하게 최솟값과 최댓값을 구하는 건 상당히 쉽다.

 

최솟값과 최댓값을 뜻하는 변수 두 개를 선언하고 전체 Data를 돌면서 각각 최솟값보다 작은 수가 나오면 갱신, 최댓값보다 큰 수가 나오면 갱신하면 끝이다.

 

이때 처음 변수 선언 시 팁이 될 수 있는 것은 최솟값 변수엔 가능한 최댓값보다 큰 값을, 최댓값 변수엔 가능한 최솟값보다 작은 값으로 초기화하는 것이다.

 

그래야 단 한 번이라도 갱신할 수 있으며 파이썬스럽게 선언하는 방법은 float('inf'), float('-inf') 이렇게 양의 무한대, 음의 무한대로 선언하는 것이다.

 

이걸 그대로 출력해도 inf, -inf로 나오기 때문에 편하게 무한대라 생각하면 된다.

 

문제를 푸는 코드는 먼저 C를 이용하여 앞서 설명한 방식대로 답을 구하는 방법과 파이썬의 함수를 이용하여 단 3줄로 구현하는 방법을 소개하겠다.

 

먼저 C 코드이다.

 

#include <stdio.h>
int main() {
	int a,b,min=1000000,max=-1000000;
	scanf("%d", &a);
	for (int i = 0; i < a; i++) {
		scanf("%d", &b);
    	if (min > b) {
            min = b;
        }
    	if (max < b) {
            max = b;
        }
	}
	printf("%d %d", min, max);
	return 0;
}

 

원소는 -1000000 이상, 1000000 이하로 제한되어 있으므로 3번째 줄에서 딱 맞게 초기화했다.

 

그리고 5번째 반복문에서 원소를 하나씩 입력받으며 입력받은 값이 최솟값 변수보다 작다면 갱신, 최댓값 변수보다 크다면 갱신하고 결괏값을 출력하면 된다.

 

그저 완전 탐색하면 풀리는 상당히 쉬운 문제다.

 

다음은 파이썬 코드이다.

 

n=int(input())
num_list=list(map(int,input().split()))
print(min(num_list),max(num_list))

 

단 3줄로 상당히 간단하게 풀었다.

 

2번째 줄의 map은 input으로 받은 문자열을 split을 통해 공백을 기준으로 분리하고 int로 형 변환하는 함수이다.

 

따라서 리스트로 형 변환하여 저장한 뒤 min함수를 통해 최솟값을, max함수를 통해 최댓값을 출력하면 된다.

 

각 함수 별로 데이터 전체를 탐색하기 때문에 O(n)의 시간 복잡도가 걸리는데 이걸 두 번 반복해도 충분히 시간 초과에 걸리지 않고 통과할 수 있다.

 

결과 화면
결과 화면

728x90

댓글()

[코딩 테스트] NHN 그룹사 신입 개발자 공개채용 Pre-Test 1차 후기(합격)

취업 과정|2021. 11. 29. 21:47
728x90

서류 결과
서류 결과

 

NHN은 오로지 실력으로만 뽑겠다는 강한 의지를 확인할 수 있었다.

 

지원을 할 때 자소서도 쓰지 않고 단순히 개인을 식별할 수 있는 정보, 선호 계열사 정보만으로 지원이 가능했었다.

 

듣기론 2차 면접 직전에 자소서를 받아서 면접 보는 방식이기 때문에 다른 IT 대기업도 간단한 자소서를 작성하고 적부 판단만 한 뒤 코테 응시를 하는 프로세스와 차별화를 둔 것 같았다.

 

다만 문제가 난 Python을 주 언어로 사용하지만 응시 가능 언어가 C/C++, Java로 제한되었기에 그나마 익숙한 C로 구현을 연습했고 필요할만한 모듈은 미리 C++ 라이브러리를 확인한 상태에서 응시하였다.

 

2021.10.23 2시간 동안 코테를 봤는데 금융권 코테를 제외하면 가장 쉬운 난이도란 생각이 들었다.

 

총 3문제로 1문제는 우선순위 큐가 필요한 것 같아서 C++로 풀었고 나머지는 C로 충분히 구현할 수 있는 문제였다.

 

단순 구현 문제들이었으며 마지막 문제는 백트래킹으로 풀면 되는 문제였다.

 

N과 M 문제가 가장 비슷한 문제인 것 같다.

 

https://www.acmicpc.net/problem/15649

 

15649번: N과 M (1)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

 

체감상 백준 티어 기준 브~실 수준인 것 같았다.

 

공채 단톡방에서도 3문제를 풀었단 의견이 다수였고 상반기의 코테 문제도 얼핏 보니 NHN의 코테는 가벼운 수준의 프로그래밍 실력을 묻는 것이라 생각한다.

 

2021.11.04 1차 합격 메일과 함께 Pre-Test 2차 전형 안내가 왔다.

 

코테 결과
코테 결과

 

유튜브 등을 통해 알아본 결과 2차는 학부 시험 수준이라 하니까 강의 자료를 훑어보는 식으로 공부해야겠다.

 

728x90

댓글()

[PDF 전자책] 쉽게 풀어쓴 자료구조와 알고리즘 기본 가이드

728x90

썸네일
Thumbnail

개발자로 취업하기 위해선 중요한 요소들이 몇 가지 있습니다.

 

보통 IT 직무의 채용 절차는 다음과 같습니다.

코딩 테스트 -> 필기 테스트 -> 역량 면접 -> 인성 면접 -> 건강검진 -> 입사

 

각각

  1. 알고리즘 구현 능력
  2. CS(Computer Science) 지식 (전공 이론 지식)
  3. 실무 적응 가능성
  4. 회사 및 직무 적합도
  5. 건강 이상

위의 요소가 중요합니다.

 

이 중 가장 처음으로 접하는 테스트인 알고리즘 구현 능력은 주어진 문제를 해결하는 과정을 평가하므로 적절한 상황에 적합한 알고리즘을 적용하기 위해 자료구조와 알고리즘 학습이 필수입니다.

 

따라서 이 책은 취업 준비를 위해 자료구조와 알고리즘을 복습, 독학하는 과정에서 프로그래밍 언어에 대한 자료는 많이 있지만 자료구조와 알고리즘을 같이 묶은 집약된 자료를 찾기 어려웠고 국비지원 강의를 들을 때 비전공자 분들과 협업한 경험을 통해 프로그래밍 자체에 어려움을 겪는다는 것을 알게 되어 도움이 되고자 작성하게 되었습니다.

 

이 부분에 착안하여 고등학교 수리 과외 경험을 살려 언어만 알고 있다면 비전공자도 최대한 쉽게 이해할 수 있도록 작성한 PDF 형태의 전자책입니다.

 

언어는 가장 기본으로 여겨지는 C와 이해가 쉬운 Python을 기반으로 작성하였으며 목차에서 목록을 클릭하면 해당 본문 페이지로, 본문 페이지의 제목을 클릭하면 다시 목차로 넘어올 수 있도록 만들었기에 전자책의 편의성을 극대화하였습니다.

 

공부가 주목적이라 마케팅이 전혀 없었기에 몇 권 팔리진 않았지만 지인을 포함한 구매하신 분들 전부 좋은 자료라는 호평이 이어졌습니다.

 

관심 있으신 분들은 한 번 구경하셔도 좋을 것 같습니다!!

 

https://kmong.com/gig/290286

 

누구나 쉽게 독학 가능한 자료구조 알고리즘 전자책을 드립니다. | 20000원부터 시작 가능한 총 평

1개 총 작업 개수 완료한 총 평점 5점인 코딩독학의 투잡∙노하우, 직무스킬 전자책 서비스를 1개의 리뷰와 함께 확인해 보세요. 투잡∙노하우, 직무스킬 전자책 제공 등 20000원부터 시작 가능한

kmong.com

728x90

댓글()