HR30 Day 28: RegEx, Patterns, and Intro to Databases

1 개요[ | ]

HR30 Day 28: RegEx, Patterns, and Intro to Databases

해커랭크 30 Days of Code
문제 풀이
20-29 Day e
HR30 Day 20: Sorting

HR30 Day 21: Generics

HR30 Day 22: Binary Search Trees

HR30 Day 23: BST Level-Order Traversal

HR30 Day 24: More Linked Lists

HR30 Day 25: Running Time and Complexity

HR30 Day 26: Nested Logic

HR30 Day 27: Testing

HR30 Day 28: RegEx, Patterns, and Intro to Databases

HR30 Day 29: Bitwise AND

2 Java[ | ]

import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;
class Row {
    public String firstName;
    public String emailID;
    public Row(String firstName, String emailID) {
        this.firstName = firstName;
        this.emailID = emailID;
    }
}
public class Solution {
    private static final Scanner scanner = new Scanner(System.in);
    public static void main(String[] args) {
        int N = scanner.nextInt();
        scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
        List<Row> rows = new ArrayList<Row>();
        for (int NItr = 0; NItr < N; NItr++) {
            String[] firstNameEmailID = scanner.nextLine().split(" ");
            String firstName = firstNameEmailID[0];
            String emailID = firstNameEmailID[1];
            if( !firstName.matches("^[a-z]{1,20}$") ) continue;
            if( !emailID.matches("^[a-z\\.]{1,40}@gmail.com$") ) continue;
            rows.add(new Row(firstName,emailID));
        }
        scanner.close();
        rows.sort(new Comparator<Row>() {
            public int compare(Row r1, Row r2)  {
                return r1.firstName.compareTo(r2.firstName);
            }
        });
        for(Row row: rows) {
            System.out.println(row.firstName);
        }
    }
}

3 PHP[ | ]

<?php
$stdin = fopen("php://stdin", "r");
fscanf($stdin, "%d\n", $N);
$rows = [];
for ($N_itr = 0; $N_itr < $N; $N_itr++) {
    fscanf($stdin, "%[^\n]", $firstNameEmailID_temp);
    $firstNameEmailID = explode(' ', $firstNameEmailID_temp);
    $firstName = $firstNameEmailID[0];
    $emailID = $firstNameEmailID[1];
    if(preg_match('/^[a-z]{1,20}$/',$firstName)<1) continue;
    if(preg_match('/^[a-z\.]{1,40}@gmail.com$/',$emailID)<1) continue;
    $rows[] = ['firstName'=>$firstName,'emailID'=>$emailID];
}
fclose($stdin);
usort($rows, function($a,$b) {
   return $a['firstName'] > $b['firstName']; 
});
foreach($rows as $row) {
    echo $row['firstName'] . "\n";
}

4 Python[ | ]

#!/bin/python3
import math
import os
import random
import re
import sys

if __name__ == '__main__':
    N = int(input())
    rows = []
    reFirstName = re.compile("^[a-z]{1,20}$")
    reEmail = re.compile("^[a-z\\.]{1,40}@gmail.com$")
    for N_itr in range(N):
        firstNameEmailID = input().split()
        firstName = firstNameEmailID[0]
        emailID = firstNameEmailID[1]
        if not reFirstName.match(firstName): continue
        if not reEmail.match(emailID): continue
        rows.append({'firstName':firstName,'emailID':emailID})
    for row in sorted(rows, key=lambda k: k['firstName']):
        print( row['firstName'] )
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}