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

 

10808번: 알파벳 개수

단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다.

www.acmicpc.net

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String input = sc.next();
        String a = "abcdefghijklmnopqrstuvwxyz";
        int[] cnt = new int[a.length()];
        for(int i = 0; i < input.length(); i++){
            for(int j = 0; j < a.length(); j++){
                if(input.charAt(i) == a.charAt(j)){
                    cnt[j] += 1;
                }
            }
        }
        for(int i = 0; i < cnt.length; i++){
            System.out.print(cnt[i] + " ");
        }
    }


}

 

- 아스키코드로 푸는 문제라는데 실전에서 그걸 내가 기억할 수 있을가 싶다..

- String a에 알파벳 a ~ z까지 넣고 String의 charAt 함수를 이용해서 일일이 문자 대조 가능

 

 

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

 

3273번: 두 수의 합

n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는

www.acmicpc.net

 

import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {

    static int N, X;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        N = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine());
        int[] arr = new int[N];
        for(int i = 0; i < N; i++){
            arr[i] = Integer.parseInt(st.nextToken());
        }
        X = Integer.parseInt(br.readLine());

        Arrays.sort(arr);

        int s = 0; int e = N-1; int sum = 0; int ans = 0;

        while(s < e){
            sum = arr[s] + arr[e];
            if(sum == X) ans++;
            if(sum <= X) s++;
            else e--;
        }

        br.close();
        System.out.print(ans);

    }


}

 

 

이전 풀이 : 런타임에러 발생

import java.io.*;
import java.util.StringTokenizer;

import static java.lang.Math.*;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine());
        int[] arr = new int[1000001];
        for(int i = 0; i < n; i++){
            arr[Integer.parseInt(st.nextToken())] += 1;
        }

        int comp = Integer.parseInt(br.readLine());
        int ans = 0;
        for(int i = 1; i < 1000000; i++){
            if(comp - i > 0) {
                if(arr[comp - i] != 0 && arr[i] != 0) ans++;
            } else{
                break;
            }
        }
        // 1 2 3 5 7 9 10 11 12

        System.out.println(ans/2);

    }


}

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

 

프로그래머스

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

programmers.co.kr

 

  • (heap[0][0] - previous)  * length : 현재 음식 먹는 시간 * 남은 음식 갯수 = 현재 음식을 다 먹는데 걸리는 시간 
  • heap[0][0] - previous : 현재 음식 먹는 시간을 구할 때 이전에 먹는데 걸린 시간을 빼줘야 함. 왜냐면 그만큼 시간이 흘렀으니까.
  • 이 부분 떠올리는게 어려웠음

 

import heapq
def solution(food_times, k):
    heap = []
    
    if sum(food_times) <= k:
        return -1
    
    for i in range(len(food_times)):
        heapq.heappush(heap, (food_times[i], i+1))
        
    sum_val = 0 # 먹기 위해 사용한 총 시간 
    previous = 0    # 직전에 먹는데 걸린 시간
    length = len(food_times)
    
    # 직전에 다 먹은 시간을 heap[0][0]에서 빼줘야 함. 
    # 왜냐면 그만큼 시간이 흘렀으니까.
    # 현재 음식 먹는 시간 * 남은 음식 갯수 = 현재 음식을 다 먹는데 걸리는 시간 
    while sum_val + ((heap[0][0] - previous)) * length <= k:
        now = heapq.heappop(heap)[0]
        sum_val += (now - previous) * length
        length -= 1 # 남은 음식 수 조정 
        previous = now 
        
    # result에는 남은 음식 배열만 담기게 됨 
    # index순으로 정렬 
    result = sorted(heap, key = lambda x : x[1])
    # 남은 음식 중에서 몇 번째 음식인지 확인하여 출력 
    return result[(k-sum_val)%length][1]

'◦ Algorithm > Python' 카테고리의 다른 글

백준 2xn 타일링 2 DP  (0) 2023.05.24
프로그래머스 두 큐 합 같게 하기  (0) 2023.05.22
백준 스타트와 링크 14889 완전탐색  (0) 2023.05.14
백준 퇴사 14501 DP  (0) 2023.05.14
백준 로봇 조종하기 2169 DP  (0) 2023.05.09

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

 

프로그래머스

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

programmers.co.kr

 

  • CONCAT : 컬럼 및 문자열 합치기

 

SELECT CONCAT('/home/grep/src/', BOARD_ID, '/', FILE_ID, FILE_NAME, FILE_EXT)
AS FILE_PATH
FROM USED_GOODS_FILE
WHERE BOARD_ID = (SELECT BOARD_ID 
                    FROM USED_GOODS_BOARD
                    ORDER BY VIEWS 
                    DESC LIMIT 1)
ORDER BY FILE_ID DESC

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

 

프로그래머스

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

programmers.co.kr

 

  • IN 사용하면 됨!

 

SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')
ORDER BY ANIMAL_ID

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

 

프로그래머스

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

programmers.co.kr

 

  • 특정 문자 들어간 문자열 찾기
  • like는 대소문자 구분하지 않음
  • 만약 대소문자 구분하려면 BINARY(NAME) 으로 바꿔서 검색하면 됨

 

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE NAME LIKE '%el%'
AND ANIMAL_TYPE = 'Dog'
ORDER BY NAME
  1. 이름에 el이 들어가는 동물 찾기
  •  

 

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

 

프로그래머스

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

programmers.co.kr

 

  • DATEDIFF(종료 날짜, 시작 날짜) / 혹은 그냥 '종료 날짜 - 시작 날짜' 로도 구할 수 있음
  • LIMIT 2 : TOP 2 출력
  • ORDER BY 정렬 기준 오름차순/내림차순 LIMIT 숫자

 

SELECT I.ANIMAL_ID, I.NAME
FROM ANIMAL_INS I
JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID = O.ANIMAL_ID
ORDER BY DATEDIFF(O.DATETIME, I.DATETIME)
DESC LIMIT 2

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

 

프로그래머스

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

programmers.co.kr

 

  • LEFT(컬럼명, 끝 인덱스)
  • SUBSTRING(컬럼명, 시작 인덱스, 끝 인덱스)
  • LEFT(PRODUCT_CODE, 2) AS CATEGORY 라고 슨 이후 group by, order by를 CATEGORY로 할 수 있음

 

SELECT LEFT(PRODUCT_CODE, 2) AS CATEGORY, COUNT(*) AS PRODUCT
FROM PRODUCT
GROUP BY CATEGORY
ORDER BY CATEGORY

+ Recent posts