https://school.programmers.co.kr/learn/courses/30/lessons/59035

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

SELECT name, datetime
FROM animal_ins
ORDER BY animal_id DESC

 

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/59036

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

SELECT animal_id, name
FROM animal_ins
WHERE intake_condition = "Sick"
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/59405

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

머리를 좀 써야하는 문제입니다. 두가지 풀이가 가능합니다.

 

 

SELECT name
FROM animal_ins
ORDER BY datetime ASC
LIMIT 1

좀 더 쉬운 풀이는 그냥 datetime을 기준으로 정렬하고 LIMIT를 사용해 딱 하나의 row만 출력하는 겁니다.

datetime으로 오름차순 정렬후 맨 위의 row만 출력하기 때문에 당연히 가장 먼저 들어온 동물의 name이 출력됩니다.

 

 

SELECT name
FROM (
    SELECT name, RANK() OVER(ORDER BY datetime ASC) AS date_rank
    FROM animal_ins
    ) AS R
WHERE R.date_rank = 1

조금 더 복잡한 풀이는 datetime을 기준으로 정렬하고, date_rank라는 새로운 column을 RANK()를 통해 만듭니다.

즉 테이블이 동물의 name과 datetime의 순위 두개의 column을 가지게 되고 이 때 date_rank가 1인 row가 가장 먼저 들어온 동물의 정보가 됩니다.

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/59037

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

SELECT animal_id, name
FROM animal_ins
WHERE intake_condition != "Aged"
ORDER BY animal_id
728x90

 

https://school.programmers.co.kr/learn/courses/30/lessons/12931?language=python3 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

Java를 사용했다면 조금 더 귀찮게 코드를 짜야 하지만 Python은 문자열 다루기가 편하기 때문에 쉽게 구현할 수 있습니다.

 

def solution(n):
    number = str(n)
    answer = 0
    for i in number:
        answer += int(i)

    return answer
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/12928

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

입력 사이즈가 작아서 대충 돌려도 되지만... 약수의 특징을 사용하면 조금 더 효율적인 코드를 짤 수 있습니다.

N의 제곱근을 기준으로 작은 약수와 큰 약수로 나누어 두개를 동시에 찾으면 됩니다.

 

예를 들어 100의 약수를 찾을때, 100의 제곱근은 10입니다.

10보다 작은 100의 약수 1, 2, 4, 5는 각각 100, 50, 25, 20과 대응됩니다.

또 100의 제곱근인 10이 정수이므로 10도 포함할 수 있습니다. 이렇게 약수를 찾는 경우 N이 클 때는 어마어마한 시간차이가 나게 됩니다.

 

class Solution {
    public int solution(int n) {
        int answer = 0;
        int div = 1;
        while(div < Math.sqrt(n)){{
            if(n % div == 0){
                answer += div;
                answer += (n/div);
            }
            div += 1;
        }}
        if(div == Math.sqrt(n)){
            answer += div;
        }
        return answer;
    }
}
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/12944?language=python3 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

def solution(arr):
    answer = sum(arr) / len(arr)
    return answer
728x90

 

class Solution {
    public String solution(int num) {
        if(num % 2 == 0){
            return "Even";
        }else{
            return "Odd";
        }
    }
}

https://school.programmers.co.kr/learn/courses/30/lessons/12937

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

프로그래머스 코딩연습에서 안 푼 Lv.1문제들을 좀 해치우겠습니다.

정말 간단한, 어떤 언어를 쓰든 하루만 공부해도 풀 수 있는 문제입니다.

 

 

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/59404

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

SQL 문제들이 대체로 알고리즘 문제 보다는 쉬운데다가 기본적인 SQL 사용법을 알려주는 문제들이다 보니 개념이 하나씩만 추가됩니다. 

name과 datetime 두개를 기준으로 정렬을 합니다. 단, datetime의 경우는 거꾸로 내림차순 정렬이 필요합니다.

 

SELECT animal_id, name, datetime
FROM animal_ins
ORDER BY name, datetime desc
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/59407

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

마찬가지로 기본적인 SQL 문제입니다.

name이 NULL이 아닌걸로 WHERE 조건을 넣어주면 됩니다. 

 

SELECT animal_id
FROM animal_ins
WHERE name is not NULL
ORDER BY animal_id
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/59403

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

SQL 문제입니다. 1레벨은 기본적인 SQL 지식만 갖고 있어도 풀 수 있습니다.

찾으라는 column을 골라주고 animal_id를 기준으로 오름차순 정렬하면 됩니다.

 

 

정답코드는 다음과 같습니다.

SELECT animal_id, name
FROM animal_ins
ORDER BY animal_id

column명을 소문자로 쓰는건 제 취향입니다 ㅎㅎ;; 저렇게 쓰는게 보기가 좋더라구요.

728x90

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

 

1303번: 전쟁 - 전투

첫째 줄에는 전쟁터의 가로 크기 N, 세로 크기 M(1 ≤ N, M ≤ 100)이 주어진다. 그 다음 두 번째 줄에서 M+1번째 줄에는 각각 (X, Y)에 있는 병사들의 옷색이 띄어쓰기 없이 주어진다. 모든 자리에는

www.acmicpc.net

 

https://nodingco.tistory.com/138?category=516041 

 

[Java] 백준 1303번. 전쟁-전투 (실버1)

https://www.acmicpc.net/problem/1303 1303번: 전쟁 - 전투 첫째 줄에는 전쟁터의 가로 크기 N, 세로 크기 M(1 ≤ N, M ≤ 100)이 주어진다. 그 다음 두 번째 줄에서 M+1번째 줄에는 각각 (X, Y)에 있는 병사들..

nodingco.tistory.com

 

위 풀이의 Python 버전입니다. 크게 다를건 없고 Python이 코드라인이 훨씬 적습니다.

 

 

import sys
from collections import deque

nm = sys.stdin.readline().split(' ')
M = int(nm[0])
N = int(nm[1])
B, W = 0, 0
maps = []
delta = [[-1, 0],[1, 0],[0, -1],[0, 1]]

for n in range(N):
    maps.append(list(sys.stdin.readline()))

for n in range(N):
    for m in range(M):
        maps[n][m] = 0 if maps[n][m] == 'W' else 1

for n in range(N):
    for m in range(M):
        if maps[n][m] in [0, 1]:
            target = maps[n][m]
            count = 0
            queue = deque()
            queue.append([n, m])
            maps[n][m] = -1

            while len(queue) > 0:
                x, y = queue.popleft()
                count += 1

                for i in range(4):
                    nx = x + delta[i][0]
                    ny = y + delta[i][1]
                    if 0 <= nx < N and 0 <= ny < M and maps[nx][ny] == target:
                        queue.append([nx,ny])
                        maps[nx][ny] = -1

            count *= count
            if target == 0:
                W += count
            else:
                B += count

print(f"{W} {B}")
728x90

+ Recent posts